El código Morse es una forma en la que uno puede codificar caracteres y texto usando puntos y rayas. Los códigos Morse internacionales contienen 26 letras del alfabeto y algunas letras no inglesas que son números arábigos, así como algunos signos de puntuación. En código Morse, no hay diferencia entre las letras mayúsculas y minúsculas. La transmisión del Código Morse se mide en duraciones de puntos. La aplicación Morse Code Converter es una aplicación que se utiliza para convertir las declaraciones dadas al código Morse. Esto se hace usando Android Studio . Los lenguajes que se utilizan son Java y XML .
Entonces, en este artículo, vamos a crear una aplicación de Android de conversión de código Morse usando el lenguaje Java. Este proyecto también involucra la conversión del Código Morse en Declaraciones relevantes. Significa que tanto la codificación como la decodificación se pueden realizar con esta aplicación de Android.
Herramientas de software requeridas
Las herramientas de software requeridas en este proyecto son:
- ANDROID-STUDIO IDE (1.0.2)
- SDK con nivel de API 21 (versión mínima)
- JAVA 7 y superior
- Un teléfono inteligente Android: versión 4.2.2 (Jelly bean y superior) (solo para probar el software)
Acercarse
Paso 1: Crear un nuevo proyecto
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.
Paso 2: crea un botón redondo
Este paso es opcional (solo si desea un botón negro con esquinas redondeadas). En la pestaña del proyecto , en la esquina izquierda de la pantalla, haga clic en la carpeta de la aplicación . Luego, haga clic en la carpeta res . Luego, haga clic con el botón derecho en la carpeta dibujable y seleccione Nuevo , luego seleccione Archivo de recurso dibujable . Asigne un nombre a este archivo de recursos. Recuerde que solo puede usar letras minúsculas para el nombre del archivo de recursos. Escriba el código a continuación para crear un archivo de recursos para botones negros con esquinas redondeadas. Utilice este archivo de recursos como fondo en el código XML de los botones para obtener botones negros con esquinas redondeadas.
mybutton.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <corners android:radius="15dip" /> <stroke android:width="1dip" android:color="#5e7974" /> <gradient android:angle="-90" android:endColor="#091037" android:startColor="#0C000E" /> </shape> </item> </selector>
En caso de que desee utilizar el botón predeterminado o algún otro botón, omita este paso opcional y no incluya el archivo de recursos en el fondo de los botones.
Paso 3: trabajar con el archivo activity_main.xml
- Abra el archivo activity_main.xml y comience a escribir el código xml.
- Cree 2 EditTexts en el archivo xml. Uno para escribir la entrada y el otro para mostrar la salida. Los EditTexts se utilizan porque al hacer clic en EditTexts, el texto se puede seleccionar y copiar, lo que será muy útil para enviar el mensaje codificado/sin codificar a otra persona que utilice cualquier aplicación de mensajería.
- Haga 3 botones : codificar, decodificar y borrar.
- El botón Codificar tomará la entrada como texto del EditText de entrada y luego la codificará en código morse y la mostrará en el EditText de salida.
- El botón Decode tomará el código morse como entrada del EditText de entrada y luego lo decodificará en alfabetos y números y lo mostrará en el EditText de salida.
- El botón Borrar borrará los EditTexts de entrada y salida.
- Proporcione identificaciones a todos los EditTexts y Buttons.
El código xml completo se proporciona a continuación:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#006600" android:padding="25dp" tools:context=".MainActivity"> <TextView android:id="@+id/tvgfg" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="-8dp" android:gravity="center" android:text="GfG" android:textAlignment="center" android:textColor="#000" android:textSize="25sp" android:textStyle="italic" /> <EditText android:id="@+id/etinput" android:layout_width="match_parent" android:layout_height="100dp" android:layout_below="@+id/tvgfg" android:layout_marginTop="5dp" android:background="#ffffff" android:gravity="start" /> <!--edit text to accept the input from the user--> <LinearLayout android:id="@+id/llout" android:layout_width="match_parent" android:layout_height="50dp" android:layout_below="@+id/etinput" android:layout_marginTop="5dp" android:gravity="center" android:orientation="horizontal"> <Button android:id="@+id/btnencode" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginRight="5dp" android:background="@drawable/mybutton" android:padding="13dp" android:text="EnCode" android:textColor="#fff" android:textSize="20sp" android:textStyle="bold" /> <Button android:id="@+id/btnclear" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginRight="5dp" android:background="@drawable/mybutton" android:padding="13dp" android:text="clear" android:textColor="#fff" android:textSize="20sp" android:textStyle="bold" /> <Button android:id="@+id/btndecode" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/mybutton" android:padding="13dp" android:text="decode" android:textColor="#fff" android:textSize="20sp" android:textStyle="bold" /> </LinearLayout> <!--edit text to display output to the user. Edit text is used since the user can copy the text easily if he wants to--> <EditText android:id="@+id/etoutput" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/llout" android:layout_marginTop="10dp" android:background="#ffffff" android:gravity="start" android:textSize="20sp" android:textStyle="bold" /> </RelativeLayout>
Paso 4: trabajar con el archivo MainActivity.java
- Abra el archivo MainActivity.java.
- Inicialice las variables justo debajo de la clase MainActivity (Syntax:- Edit Text einput, etoutput;Button btnEncode, btnDecode, btnclear;)
- Asigne las variables bajo el método OnCreate.
- Haga una array y almacene todos los alfabetos y dígitos en ella.
- Haga otra array y almacene el código morse de cada alfabeto y dígitos en los índices correspondientes a sus alfabetos y dígitos en la primera array.
- Use la lógica en el código a continuación para completar la aplicación de conversión de código morse.
A continuación se muestra el código completo del archivo MainActivity.java .
MainActivity.java
package com.example.morseconverter; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { // initialize variables EditText etinput, etoutput; Button btnEncode, btnDecode, btnclear; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Assign variables etinput = findViewById(R.id.etinput); etoutput = findViewById(R.id.etoutput); btnDecode = findViewById(R.id.btndecode); btnEncode = findViewById(R.id.btnencode); btnclear = findViewById(R.id.btnclear); // initializing string arrays final String[] AlphaNumeric = new String[37]; // string array for storing alphabets and numbers final String[] AlphaNumeric1 = new String[37]; // string array for storing corresponding morse code // assigning alphabets to the string array Alphanumeric[] AlphaNumeric[0] = "A"; AlphaNumeric[1] = "B"; AlphaNumeric[2] = "C"; AlphaNumeric[3] = "D"; AlphaNumeric[4] = "E"; AlphaNumeric[5] = "F"; AlphaNumeric[6] = "G"; AlphaNumeric[7] = "H"; AlphaNumeric[8] = "I"; AlphaNumeric[9] = "J"; AlphaNumeric[10] = "K"; AlphaNumeric[11] = "L"; AlphaNumeric[12] = "M"; AlphaNumeric[13] = "N"; AlphaNumeric[14] = "O"; AlphaNumeric[15] = "P"; AlphaNumeric[16] = "Q"; AlphaNumeric[17] = "R"; AlphaNumeric[18] = "S"; AlphaNumeric[19] = "T"; AlphaNumeric[20] = "U"; AlphaNumeric[21] = "V"; AlphaNumeric[22] = "W"; AlphaNumeric[23] = "X"; AlphaNumeric[24] = "Y"; AlphaNumeric[25] = "Z"; AlphaNumeric[26] = "0"; AlphaNumeric[27] = "1"; AlphaNumeric[28] = "2"; AlphaNumeric[29] = "3"; AlphaNumeric[30] = "4"; AlphaNumeric[31] = "5"; AlphaNumeric[32] = "6"; AlphaNumeric[33] = "7"; AlphaNumeric[34] = "8"; AlphaNumeric[35] = "9"; AlphaNumeric[36] = " "; // assigning the corresponding morse code // for each letter and number to // Alphanumeric1[] array AlphaNumeric1[0] = ".-"; AlphaNumeric1[1] = "-..."; AlphaNumeric1[2] = "-.-."; AlphaNumeric1[3] = "-.."; AlphaNumeric1[4] = "."; AlphaNumeric1[5] = "..-."; AlphaNumeric1[6] = "--."; AlphaNumeric1[7] = "...."; AlphaNumeric1[8] = ".."; AlphaNumeric1[9] = ".---"; AlphaNumeric1[10] = "-.-"; AlphaNumeric1[11] = ".-.."; AlphaNumeric1[12] = "--"; AlphaNumeric1[13] = "-."; AlphaNumeric1[14] = "---"; AlphaNumeric1[15] = ".--."; AlphaNumeric1[16] = "--.-"; AlphaNumeric1[17] = ".-."; AlphaNumeric1[18] = "..."; AlphaNumeric1[19] = "-"; AlphaNumeric1[20] = "..-"; AlphaNumeric1[21] = "...-"; AlphaNumeric1[22] = ".--"; AlphaNumeric1[23] = "-..-"; AlphaNumeric1[24] = "-.--"; AlphaNumeric1[25] = "--.."; AlphaNumeric1[26] = "-----"; AlphaNumeric1[27] = ".----"; AlphaNumeric1[28] = "..---"; AlphaNumeric1[29] = "...--"; AlphaNumeric1[30] = "....-"; AlphaNumeric1[31] = "....."; AlphaNumeric1[32] = "-...."; AlphaNumeric1[33] = "--..."; AlphaNumeric1[34] = "---.."; AlphaNumeric1[35] = "----."; AlphaNumeric1[36] = "/"; btnEncode.setOnClickListener(new View.OnClickListener() {@Override public void onClick(View v) { // When button encode is clicked then the // following lines inside this curly // braces will be executed // to get the input as string which the user wants to encode String input = etinput.getText().toString(); String output = ""; // variable used to compute the output // to get the length of the input string int l = input.length(); // variables used in loops int i, j; for (i = 0; i < l; i++) { // to extract each Token of the string at a time String ch = input.substring(i, i + 1); // the loop to check the extracted token with // each letter and store the morse code in // the output variable accordingly for (j = 0; j < 37; j++) { if (ch.equalsIgnoreCase(AlphaNumeric[j])) { // concat space is used to separate // the morse code of each token output = output.concat(AlphaNumeric1[j]).concat(" "); } } } // to display the output etoutput.setText(output); } }); btnclear.setOnClickListener(new View.OnClickListener() {@Override public void onClick(View v) { // When button clear is clicked then the // following lines inside this curly // braces will be executed // to clear the etinput etinput.setText(""); // to clear etoutput etoutput.setText(""); } }); btnDecode.setOnClickListener(new View.OnClickListener() {@Override public void onClick(View v) { // When button decode is clicked then the // following lines inside this curly // braces will be executed // to get the input given by the user as string String input1 = etinput.getText().toString(); // to add space to the end of the string // because of the logic used in decoding String input = input1.concat(" "); // to get the length of the input string int l = input.length(); // i and j are integer variables used in loops. // Variable p is used as the end index of // substring() function int i, j, p = 0; // variable used as a starting // index of substring() function int pos = 0; // to store the extracted morse code // for each Alphabet,number or space String letter = ""; // a to store the output in it String output = ""; for (i = 0; i < l; i++) { // a variable used to trigger the j loop only // when the complete morse code of a letter // or number is extracted int flag = 0; // to extract each token at a time String ch = input.substring(i, i + 1); // if the extracted token is a space if (ch.equalsIgnoreCase(" ")) { // to store the value of i in p p = i; // to extract the morse code for each letter or number letter = input.substring(pos, p); // to update the value of pos so that next // time the morse code for the next letter // or digit is extracted pos = p + 1; flag = 1; } String letter1 = letter.trim(); // to delete extra whitespaces at // both ends in case there are any if (flag == 1) { for (j = 0; j <= 36; j++) { if (letter1.equalsIgnoreCase(AlphaNumeric1[j])) { output = output.concat(AlphaNumeric[j]); break; } } } } // to display the output etoutput.setText(output); } }); } }
Salida: ejecutar en el emulador
Enlace de Github: Haga clic aquí
Publicación traducida automáticamente
Artículo escrito por supriya_saxena y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA