Vamos a programar #46 - Código Bacon (ver Java android)
Hola de nuevo a todos, el día de hoy vamos a ver un poco mas sobre el código Bacon y cómo implementar una aplicación en android que haga todo el trabajo sucio por nosotros.
En post anteriores vimos cómo hacer la misma aplicación para C# (escritorio) y Javascript (Web), en esta ocasión, todo el post será solo para mostrar la app, puesto que las funciones que se emplean son exactamente las mismas que la versión de C#. El código completo es el siguiente:
Cómo notarás, no hay ningún cambio significativo (y no lo habrá en unos días debido a que mi PC murió y no cuento con el tiempo cómo para arreglarlo). Por ahora dejo el código fuente y el APK ya compilado para que los descargues de mi dropbox. Las actualizaciones se harán juntas para las 3 versiones en alguno de los próximos post
Por ahora es todo, los leo luego.
En post anteriores vimos cómo hacer la misma aplicación para C# (escritorio) y Javascript (Web), en esta ocasión, todo el post será solo para mostrar la app, puesto que las funciones que se emplean son exactamente las mismas que la versión de C#. El código completo es el siguiente:
package com.mdev.baconiancipher;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
EditText ETInput, ETInput2, ETPreResult, ETResult;
Button BtnPreCipher, BtnCipher;
String[] Values = new String[]{"AAAAA", "AAAAB", "AAABA",
"AAABB", "AABAA", "AABAB", "AABBA", "AABBB", "ABAAA", "ABAAA",
"ABAAB", "ABABA", "ABABB", "ABBAA", "ABBAB", "ABBBA", "ABBBB",
"BAAAA", "BAAAB", "BAABA", "BAABB", "BAABB", "BABAA", "BABAB",
"BABBA", "BABBB"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ETInput = findViewById(R.id.ETInput);
ETInput2 = findViewById(R.id.ETInput2);
ETPreResult = findViewById(R.id.ETPreResult);
ETResult = findViewById(R.id.ETResult);
BtnPreCipher = findViewById(R.id.BtnPreCipher);
BtnCipher = findViewById(R.id.BtnCipher);
BtnPreCipher.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ETPreResult.setText(CharToBaconianCode(ETInput.getText().toString()));
}
}
);
BtnCipher.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ETResult.setText(FinalCipher(ETPreResult.getText().toString(),ETInput2.getText().toString()));
}
});
}
private String CharToBaconianCode(String Input)
{
Input = Input.toUpperCase();
char[] Letras = Input.toCharArray();
String OutValue = "";
for (int X = 0; X < Letras.length; X++)
{
if ((byte)Letras[X] < 91 && (byte)Letras[X] > 64)
{
OutValue += Values[(byte)Letras[X] - 65];// + " ";
}
}
return OutValue;
}
private boolean IsLower(byte Code)
{
if (Code > 96 && Code < 123)
return true;
else
return false;
}
private String FinalCipher(String PreCipher, String Phrase)
{
if (PreCipher.length() != Phrase.length())
{
ShowDialog("Error","Las longitudes del pre-cifrado y la frase para insertarlo no coinciden");
return "Error";
}
char[] PreCipherChars = PreCipher.toCharArray();
char[] PhraseChars = Phrase.toCharArray();
String FinalResult = "";
for (int Y = 0; Y < PhraseChars.length; Y++)
{
if ((byte)PreCipherChars[Y] == 65)
{
if (IsLower((byte)PhraseChars[Y]))
FinalResult += PhraseChars[Y];
else
FinalResult += (char)(PhraseChars[Y] + 32);
}
else
{
if (!IsLower((byte)PhraseChars[Y]))
FinalResult += PhraseChars[Y];
else
FinalResult += (char)(PhraseChars[Y] - 32);
}
}
return FinalResult;
}
//Mostrar dialog de manera sencilla
private void ShowDialog(String Title, String Caption)
{
new AlertDialog.Builder(this)
.setTitle(Title)
.setMessage(Caption)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// algo
}
})
.setIcon(android.R.drawable.ic_dialog_alert)
.show();
}
}
Cómo notarás, no hay ningún cambio significativo (y no lo habrá en unos días debido a que mi PC murió y no cuento con el tiempo cómo para arreglarlo). Por ahora dejo el código fuente y el APK ya compilado para que los descargues de mi dropbox. Las actualizaciones se harán juntas para las 3 versiones en alguno de los próximos post
Por ahora es todo, los leo luego.



No hay comentarios.