Описание приложения
Приложение должо давать возможность
- набрать небольшой текст,
- Перекодировать его в надписть на азбуке Морзе,
- просмотреть на экране перекодированную надпись
- Выбрать одну из трех дистанций (скоростей) передачи данных (дальняя, средняя и близкая)
- Выбрать опционально или передачу светом, или передачу вибрацией или обе вместе (одна должна быть обязательно выбрана)
- Запуск передачи информации по кнопке “СТАРТ”
- Остановка передачи данных по кнопке “СТОП”
- Сброс набранного текста по кнопке “СБРОС”
Этапы реализации
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
Фонарик
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"/>