Как я могу заставить CountDownTimer сохраняться в Android в течение длительного времени?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу заставить CountDownTimer сохраняться в Android в течение длительного времени?

Сообщение Anonymous »


Я пытаюсь создать таймер обратного отсчета, который пользователь может установить, и как только он достигнет нуля, будет воспроизводиться звук. Однако у меня проблема с длинными таймерами, когда звук воспроизводится не тогда, когда таймер достигает нуля, а когда я разблокирую телефон. Также в этом случае состояние приложения сбрасывается до основного действия. Используя службу переднего плана, я могу заставить таймер работать до 30 минут или около того. Без приоритетной службы максимальное время составляло менее десяти минут. Что мне нужно использовать, чтобы таймер работал?

Вот наиболее важные фрагменты кода:
// Класс TimerActivity переопределить удовольствие onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) привязка = ActivityTimerBinding.inflate(layoutInflater) setContentView(binding.root) textViewTimer = привязка.textViewTimer buttonPause = привязка.buttonPause buttonStop = привязка.buttonStop mediaPlayer = MediaPlayer.create(this, R.raw.timersound) mediaPlayer.isLooping = ложь buttonPause.setOnClickListener { если (!isTimerPaused) { // Приостановить таймер обратного отсчета обратный отсчетTimer.cancel() isTimerPaused = правда buttonPause.text = getString(R.string.resume) Intent(applicationContext, TimerService::class.java).также { it.action = TimerService.PAUSE startService(оно) } } еще { // Возобновляем таймер обратного отсчета startCountdownTimer(timeRemainingMillis) isTimerPaused = ложь buttonPause.text = getString(R.string.pause) } } buttonStop.setOnClickListener { FinishAndReturnActivity(timeRemainingMillis) } val timerMinutes = Intent.getLongExtra("timerMinutes", 1) startCountdownTimer(timerMinutes * 60 * 1000) } личное развлечение createCountDownTimer(millis: Long): CountDownTimer { // Создаём и возвращаем новый CountDownTimer возвращаемый объект: CountDownTimer(миллис, 1000) { переопределить удовольствие onTick(millisUntilFinished: Long) { // Обновляем отображение обратного отсчета на каждом тике timeRemainingMillis = millisUntilFinished вал минут = (millisUntilFinished / 1000) / 60 val секунд = (millisUntilFinished / 1000) % 60 val formattedTime = String.format("%02d:%02d", минуты, секунды) textViewTimer.text = форматированноевремя } переопределить удовольствие onFinish() { textViewTimer.text = "00:00" playBellSound() val timeLeft: Long = 0 FinishAndReturnActivity (времяЛефт) } } } частное развлечение startCountdownTimer(миллис: длинный) { Intent(applicationContext, TimerService::class.java).также { it.action = TimerService.START startService(оно) } // Инициализируем таймер обратного отсчета с начальным временем timerMinutes минут countdownTimer = createCountDownTimer(миллис) обратный отсчетTimer.start() } // Класс TimerService переопределить fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { когда (намерение?.действие) { СТАРТ -> старт() ПАУЗА -> stopSelf() } вернуть super.onStartCommand(намерение, флаги, startId) } начало частного веселья() { val Notification = NotificationCompat.Builder(это, CHANNEL_ID) .setContentTitle("Таймер работает") .setContentText("Ваш таймер активен.") .строить() startForeground(1, уведомление) }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»