Возможный дубликат:
Прослушать кнопки громкости в фоновом режиме?
Я хочу прослушивать изменения громкости в моем приложении даже при заблокированном экране и отключении дисплея. Основная проблема в том, что служба работает все время (с помощью блокировок от бодрствования), но я могу читать только изменения объема с помощью моего подхода.
Если я использую службу, которая работает все время (даже с заблокированным экраном и выключенным дисплеем), у меня есть проблема. Он имеет широковещательный приемник для изменения громкости с помощью этой публикации.
public BroadcastReceiver MediaButton_Receiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event == null) {
return;
}
int action = event.getAction();
if (action == KeyEvent.KEYCODE_VOLUME_DOWN) {
Log.d(TAG,"VOLUME_DOWN Pressed");
}
};
};
event
всегда является нулевым в службе. Он вызывает только при изменении громкости. Также BroadcastReceiver не работает, когда экран выключен.
Другой способ сделать это - использовать Activity с тем, что переопределяет dispatchKeyEvent()
, но моя активность работает немного, я попытался заблокировать пробуждение, это не помогло. И я все еще не уверен, что он будет работать с заблокированным экраном. Я искал по всему Интернету, но я не могу найти ответ.
Могу ли я создать Activity, который будет захватывать нажатие кнопок громкости даже при заблокированном и выключенном экране? Или я могу как-то сделать это с помощью службы?