У меня проблема здесь, я пытаюсь создать что-то вроде Google Assistant, когда вы нажимаете кнопку воспроизведения или паузы в гарнитуре, она должна быть передана вещателем и начать новое действие
Вот что у меня есть:
Файл манифеста
<receiver android:name=".services.MediaButtonReceiver">
<intent-filter android:priority="2147483647">
<action android:name="android.intent.action.MEDIA_BUTTON"/>
</intent-filter>
</receiver>
Файл приемника широковещания
public void onReceive(Context context, Intent intent) {
Log.i("Invisible mode", "Receieved broadcast");
String intentAction = intent.getAction();
if(Intent.ACTION_MEDIA_BUTTON.equals(intentAction)){
KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if(event== null){
return;
}
int keycode = event.getKeyCode();
int action = event.getAction();
long eventtime = event.getEventTime();
if (keycode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE || keycode == KeyEvent.KEYCODE_HEADSETHOOK){
Log.i("Invisible mode", "Identified media play pause");
if (action == KeyEvent.ACTION_DOWN){
Log.i("Invisible mode", "Found action down");
MainActivity.isInvisibleMode = true;
Intent main = new Intent();
main.setClassName("co.za.ss.mn", "co.za.ss.mn.MainActivity");
main.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Log.i("Invisible mode", "Starting main activity in invisible mode");
context.startActivity(main);
}
}
}
}
, и в моей MainActivity я попытался добавить несколько строк в зарегистрировать получателя
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.intent.action.MEDIA_BUTTON");
registerReceiver(new MediaButtonReceiver(), intentFilter );
((AudioManager) getSystemService(AUDIO_SERVICE)).registerMediaButtonEventReceiver(new ComponentName(this, MediaButtonReceiver.class));
Я получаю это предупреждение в журнале регистрации вместо того, чтобы поместить его в свой вещатель
Cancelling event due to no window focus: KeyEvent { action=ACTION_UP, keyCode=KEYCODE_HEADSETHOOK, scanCode=226, metaState=0, flags=0xa8, repeatCount=0, eventTime=184566337, downTime=184565800, deviceId=1, source=0x101 }
Может кто-нибудь показать мне, что я делаю неправильно? Всякий раз, когда я нажимаю кнопку гарнитуры, на моем устройстве Android 9
ничего не происходит.