Я хочу обнаружить нажатие кнопки громкости, когда приложение находится в фоновом режиме, и даже если устройство заблокировано, я работаю на Android P, я смог получить долгое нажатие кнопки громкости, когда приложение находится в фоновом режиме, но экран не заблокирован с помощью службы иПолучение разрешения «Разрешить поверх других приложений», но это вызвало проблему: когда приложение находится в фоновом режиме, кнопка «Назад» и клавиатура не работают, я могу открыть другие приложения, такие как WhatsApp, но я не могу напечатать сообщение и не могу вернуться, Вот мой код любойпожалуйста помоги .Заранее спасибо.
Я использовал отсюда ссылку для доступа к этому коду Обнаружение кнопки питания длительным нажатием
@Override
public void onCreate(){
super.onCreate();
LinearLayout mLinear= new LinearLayout(PowerButtonService.this){
//home or recent button
public void onCloseSystemDialogs(String reason) {
if ("globalactions".equals(reason)) {
Log.i("Key", "Long press on power button");
} else if ("homekey".equals(reason)) {
//home key pressed
} else if ("recentapps".equals(reason)) {
// recent apps button clicked
}
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK
|| event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP
|| event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN
|| event.getKeyCode() == KeyEvent.KEYCODE_CAMERA
|| event.getKeyCode() == KeyEvent.KEYCODE_POWER)
{
Log.i("Key", "keycode " + event.getKeyCode());
if(event.getKeyCode()==24){
Application_Class.COUNT++;
Log.i("Count",""+Application_Class.COUNT);
}
}
return super.dispatchKeyEvent(event);
}
};
mLinear.setFocusable(true);
View mView= LayoutInflater.from(this).inflate(
R.layout.service_layout, mLinear);
WindowManager wm = (WindowManager)
getSystemService(WINDOW_SERVICE);
//params
WindowManager.LayoutParams params = new
WindowManager.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
|WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
| WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
|WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.LEFT | Gravity.CENTER_VERTICAL;
wm.addView(mView, params);
}
Я ожидаю обнаружения громкости или нажатия кнопки питаниякогда приложение находится в фоновом режиме или даже если устройство заблокировано, и это не должно вызывать двусмысленности, например, не работает кнопка «Назад» или клавиатура.Любая информация и ответ будут полезны.Пожалуйста, помогите.