Android: Как я могу обнаружить нажатие кнопки ie, когда мое приложение работает в фоновом режиме - PullRequest
1 голос
/ 06 марта 2020

Я создаю приложение Android, которое обнаруживает нажатие собственной кнопки ie, подключенной к разъему мобильного аудио.

Я могу зафиксировать нажатие кнопки, если приложение находится на переднем плане, но не на заднем плане.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
   switch (keyCode) {
       case KeyEvent.KEYCODE_VOLUME_UP:
           Toast.makeText(CustomPadActivity.this, "BUTTON clicked", Toast.LENGTH_SHORT).show();
           return true;
   }
   return super.onKeyDown(keyCode, event);
}

Я попытался использовать широковещательный приемник с действием android.intent.action.MEDIA_BUTTON, но это не захватывает нажатие кнопки вообще.

Манифест:

<receiver android:name=".MyReceiver" android:enabled="true">
    <intent-filter>
        <action android:name="android.intent.action.MEDIA_BUTTON" />
    </intent-filter>
</receiver>

И мой Класс получателя:

public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "BUTTON clicked", Toast.LENGTH_SHORT).show();
    }

}

Я где-то читаю, мне нужно сыграть кусок музыки c, если я хочу запечатлеть нажатие кнопки. Приложение не является аудиоплеером. Я не хочу воспроизводить звук в приложении.

Я просто пытаюсь зафиксировать нажатие кнопки ie, когда мое приложение находится в фоновом режиме.

1 Ответ

0 голосов
/ 06 марта 2020

Это, конечно,

onKeyEvent может быть только обратным вызовом в действии

Сервисы просто не получают обратные вызовы KeyEvent.

Добавить намерение в AndroidManifest в Activtiy

<intent-filter>
    <action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>

и добавьте это в свою активность, или оно не будет отображаться на вашем экране блокировки.

@Override
public void onAttachedToWindow() {
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...