Я пытаюсь создать небольшое приложение для сигнализации для Android, я новичок в разработке для Android, заранее извините, если это глупый вопрос. проблема, с которой я столкнулся, заключается в том, что будильник не начинает воспроизводиться по достижении установленного времени.
Вот код
MainActivity.kt
Я также пытался проверить журналы, но кажется, что сообщение не регистрируется. Я совершенно не понимаю, почему это происходит, любая помощь, совет или подсказка будут ценю.
Спасибо
Я пытаюсь создать небольшое приложение для сигнализации для Android, я новичок в разработке для Android, заранее извините, если это глупый вопрос. проблема, с которой я столкнулся, заключается в том, что будильник не начинает воспроизводиться по достижении установленного времени. Вот код MainActivity.kt [code]package com.example.a22012011085_pr4 import com.example.a22012011085_pr4.databinding.ActivityMainBinding import android.annotation.SuppressLint import android.app.AlarmManager import android.app.PendingIntent import android.app.TimePickerDialog import android.content.Intent import android.os.Bundle import android.view.View
class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding private var selectedAlarmTime:Long = 0 private var remindTime: Long = 0
val timePicker = binding.remainderTime timePicker.hour = getHour() timePicker.minute = getMinute()
} private fun getHour():Int { val cal = Calendar.getInstance() cal.timeInMillis = remindTime return cal[Calendar.HOUR_OF_DAY] } private fun getMinute(): Int{ val cal = Calendar.getInstance() cal.timeInMillis = selectedAlarmTime return cal[Calendar.MINUTE] }
@RequiresApi(Build.VERSION_CODES.S) private fun showTimerDialog(){ val cldr = Calendar.getInstance() val hour: Int = cldr.get(Calendar.HOUR_OF_DAY) val minutes: Int = cldr.get(Calendar.MINUTE) val picker = TimePickerDialog( this, {_, sHour, sMinute -> sendDialogDataToActivity(sHour, sMinute)}, hour, minutes, false ) picker.show() } @RequiresApi(Build.VERSION_CODES.S) @SuppressLint("SimpleDataFormat") private fun sendDialogDataToActivity(hour: Int, minute:Int){ val alarmCalender = Calendar.getInstance() val year:Int = alarmCalender.get(Calendar.YEAR) val month:Int = alarmCalender.get(Calendar.MONTH) val day: Int = alarmCalender.get(Calendar.DATE) alarmCalender.set(year, month,day, hour,minute,0) val alarmTimeText = findViewById(R.id.alarmTimeText) binding.card2.visibility = View.VISIBLE alarmTimeText.text = SimpleDateFormat("hh:mm ss a dd MMM yyyy").format(alarmCalender.time) selectedAlarmTime = alarmCalender.timeInMillis setAlarm(selectedAlarmTime,"Start") Toast.makeText(this,"Time: hour ${hour}, minutes: ${minute}", Toast.LENGTH_SHORT).show() } @RequiresApi(Build.VERSION_CODES.S) @SuppressLint("ScheduleExactAlarm") private fun setAlarm(millisTime: Long, str: String){
val intent = Intent(this, AlarmReceiver::class.java) intent.putExtra("Service1","Start") val pendingIntent = PendingIntent.getBroadcast( applicationContext, 2407, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) val alarmManager = getSystemService(ALARM_SERVICE) as AlarmManager if(str == "Start"){ binding.remainderTime.visibility = View.VISIBLE if(alarmManager.canScheduleExactAlarms()){ alarmManager.setExact( AlarmManager.RTC_WAKEUP, millisTime, pendingIntent ) Toast.makeText(this,"Alarm set", Toast.LENGTH_SHORT).show() } } else if(str == "Stop") { alarmManager.cancel(pendingIntent) binding.card2.visibility = View.GONE } } private fun cancelAlarm(){ val intent = Intent(this, AlarmReceiver::class.java) intent.putExtra("Service1","Stop") val pendingIntent = PendingIntent.getBroadcast(applicationContext, 2407, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE) val alarmManager = getSystemService(ALARM_SERVICE) as AlarmManager alarmManager.cancel(pendingIntent) binding.card2.visibility = View.GONE Toast.makeText(this, "Alarm canceled", Toast.LENGTH_SHORT).show() }
override fun onDestroy() { mp?.stop() mp?.release() mp = null Log.d("AlarmService", "Service Destroyed") super.onDestroy() } } [/code] Я также пытался проверить журналы, но кажется, что сообщение не регистрируется. Я совершенно не понимаю, почему это происходит, любая помощь, совет или подсказка будут ценю. Спасибо