package org.geeksforgeeks.demo;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
private EditText inputEditText, outputEditText;
private Button encodeButton, decodeButton, clearButton;
// Map letters and numbers to Morse code
private final Map<Character, String> morseMap = new HashMap<>();
private final Map<String, Character> reverseMorseMap = new HashMap<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inputEditText = findViewById(R.id.inputEditText);
outputEditText = findViewById(R.id.outputEditText);
encodeButton = findViewById(R.id.encode);
decodeButton = findViewById(R.id.decode);
clearButton = findViewById(R.id.clear);
initializeMorseCodeMaps();
encodeButton.setOnClickListener(v -> encodeText());
decodeButton.setOnClickListener(v -> decodeText());
clearButton.setOnClickListener(v -> clearText());
}
private void initializeMorseCodeMaps() {
// Populate Morse Code Map
String[] letters = {
".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---",
"-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-",
"..-", "...-", ".--", "-..-", "-.--", "--.."
};
String[] numbers = {
"-----", ".----", "..---", "...--", "....-", ".....",
"-....", "--...", "---..", "----."
};
// Add Letters
for (int i = 0; i < 26; i++) {
char letter = (char) ('A' + i);
morseMap.put(letter, letters[i]);
reverseMorseMap.put(letters[i], letter);
}
// Add Numbers
for (int i = 0; i < 10; i++) {
char number = (char) ('0' + i);
morseMap.put(number, numbers[i]);
reverseMorseMap.put(numbers[i], number);
}
// Add Space as "/"
morseMap.put(' ', "/");
reverseMorseMap.put("/", ' ');
}
// Convert input text to Morse code
private void encodeText() {
String inputText = inputEditText.getText().toString().toUpperCase();
StringBuilder encodedText = new StringBuilder();
for (char c : inputText.toCharArray()) {
if (morseMap.containsKey(c)) {
encodedText.append(morseMap.get(c)).append(" ");
}
}
outputEditText.setText(encodedText.toString().trim());
}
// Convert Morse code back to normal text
private void decodeText() {
String inputText = inputEditText.getText().toString().trim();
StringBuilder decodedText = new StringBuilder();
for (String morse : inputText.split(" ")) {
if (reverseMorseMap.containsKey(morse)) {
decodedText.append(reverseMorseMap.get(morse));
}
}
outputEditText.setText(decodedText.toString());
}
// Clear both text fields
private void clearText() {
inputEditText.setText("");
outputEditText.setText("");
}
}