Не обрабатывается нажатие на физические кнопки громкости в моем приложении на android

Делаю подпроект в большом проекте android. Когда открыт мой проект, то делаю обработку клавиш громкости через onKeyDown и onKeyUp. Нажатие 5 раз на кнопку громкости вниз запускает таймер. Теперь надо сделать это не только в моем приложении, а в фоне,когда приложение скрыто, либо когда открыт другой подпроект. Уже перепробовала все. И broadcast Receiver, и все intents, ни в каком случае кнопки громкости не срабатывают. Только когда intent "android.media.VOLUME_CHANGED_ACTION". Но мне это не подходит, когда громкость 0 то не учитываются нажатия. А мне нужно учитывать независимо от уровня громкости. Подскажите, что сделать?

class AppService : Service() {

    private val volumeKeyListener = ButtonService()

    override fun onCreate() {
        super.onCreate()

        val filter = IntentFilter().apply {
        
addAction("android.media.VOLUME_CHANGED_ACTION")
        }
    
registerReceiver(volumeKeyListener, filter)
    }
}

class ButtonService : BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
        Log.d("33333", "$intent")
    }
}

Вот это рабочий код, функция onReceive отрабатывает при нажатии кнопок громкости. Но как сделать, чтобы при достижении громкости 0 или 100 учитывались нажатия на кнопки громкости. Эти нажатия нужны не для громкости мне, в вот как на телефоне если нажать 5 раз на кнопку выключения, то запустится таймер сигнала SOS. А мне нужен такой же таймер по клику на кнопку громкости 5 раз или долгое нажатие более 5 секунд, смотря какой режим я выберу.


Ответы (0 шт):