Как я могу обнаружить долгое нажатие кнопки громкости и питания, когда приложение находится в фоновом режиме на Android P с помощью сервиса - PullRequest
0 голосов
/ 08 июля 2019

Я хочу обнаружить нажатие кнопки громкости, когда приложение находится в фоновом режиме, и даже если устройство заблокировано, я работаю на 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);
}

Я ожидаю обнаружения громкости или нажатия кнопки питаниякогда приложение находится в фоновом режиме или даже если устройство заблокировано, и это не должно вызывать двусмысленности, например, не работает кнопка «Назад» или клавиатура.Любая информация и ответ будут полезны.Пожалуйста, помогите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...