Описание приложения

Приложение должо давать возможность

  • набрать небольшой текст,
  • Перекодировать его в надписть на азбуке Морзе,
  • просмотреть на экране перекодированную надпись
  • Выбрать одну из трех дистанций (скоростей) передачи данных (дальняя, средняя и близкая)
  • Выбрать опционально или передачу светом, или передачу вибрацией или обе вместе (одна должна быть обязательно выбрана)
  • Запуск передачи информации по кнопке “СТАРТ”
  • Остановка передачи данных по кнопке “СТОП”
  • Сброс набранного текста по кнопке “СБРОС”

Этапы реализации

1. Проверка оборудования

По указанным ссылкам и справочному материалу создать программу, которая на 2 секунды включит и выключит свет и вибрацию по-отдельности, затем все вместе

2. Создание прототипа

По требованиям соответствующих библиотек создать прототип интерфейсной части программы

3. Перекодировка

Написать код превращающий написанный текст в точки, тире и пробелы, согласно азбуке Морзе

4. Реализация воспроизведения

Написать код, который воспроизводит последовательность точек и тире с помощью лампы и вибрации, согласно установленным настройкам

https://habr.com/ru/post/262343/

Вибрация

package com.example.sos2

import android.content.Context
import android.os.Bundle
import android.os.Vibrator
import android.widget.Button
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_main)
        val vibButton:Button=findViewById(R.id.button)
        vibButton.setOnClickListener {
            val vibratorService = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
            vibratorService.vibrate(500)

        }
    }
}
Манифест
<uses-permission android:name="android.permission.VIBRATE" />
Пример APK

ссылка на APK

Фонарик

package com.example.sos3

import android.hardware.camera2.CameraAccessException
import android.hardware.camera2.CameraManager
import android.os.Build
import android.os.Bundle
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity


class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val onButton: Button =findViewById(R.id.button2)
var onOff=0
val camManager = getSystemService(CAMERA_SERVICE) as CameraManager
onButton.setOnClickListener {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
var cameraId: String? = null
try {
cameraId = camManager.cameraIdList[0]
if(onOff==0) {
camManager.setTorchMode(cameraId, true) //Turn ON
}else{
camManager.setTorchMode(cameraId, false)
}
onOff=1-onOff
} catch (e: CameraAccessException) {
e.printStackTrace()
}
}
}
}
}
Манифест
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.FLASHLIGHT"/>
    <uses-feature android:name="android.hardware.camera"/>