Как я могу проверить, нажата ли кнопка воспроизведения/паузы в моей гарнитуре? После этого можно реализовать какой-либо метод, который может изменить типичное действие (воспроизведение/пауза) для моего собственного действия (закрытие и т. Д.)?Android - кнопка проверки гарнитуры
ответ
Если вы пытаетесь слушать это от деятельности на переднем плане, используйте onKeyDown()
и наблюдать за KEYCODE_MEDIA_PLAY_PAUSE
.
Используйте BroadcastReceiver
для ACTION_MEDIA_BUTTON
, если вы пытаетесь прослушивать это событие с фона (например, слушая музыку).
Вы можете использовать ACTION_MEDIA_BUTTON пристальный Читать далее выше ссылка Надеюсь, что это помощь
Это мой приемник, но это не работает, что не так? общественного окончательный BroadcastReceiver hReceiver = новый BroadcastReceiver() { \t \t общественного недействительный OnReceive (контекст Контекста, Намерение намерения) { \t Строки действия = intent.getAction(); \t \t \t \t Intent mediaButtonIntent = новое намерение (Intent.ACTION_MEDIA_BUTTON); \t \t если (mediaButtonIntent.equals (действие)) \t { \t \t adapter.add ("щелчок"); \t} \t \t} \t}; – PatLas
Прямо сейчас я использую под кнопкой мыши кнопку мыши на клавиатуре, которая работает для меня. попробуйте этот код
enter code here
//Receiver
public class MediaButtonEventReceiver extends BroadcastReceiver {
private static final String TAG = "MediaButtonIntentReceiv";
public MediaButtonIntentReceiver() {
super();
}
@Override
public void onReceive(Context context, Intent intent) {
String intentAction = intent.getAction();
if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
return;
}
KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event == null) {
return;
}
int action = event.getAction();
if (action == KeyEvent.ACTION_DOWN) {
// do something
Log.e(TAG, "onReceive: ");
Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show();
}
abortBroadcast();
}
}
//Write this code in onCreateview in your activity
IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
MediaButtonIntentReceiver r = new MediaButtonIntentReceiver();
filter.setPriority(1000); //this line sets receiver priority
registerReceiver(r, filter);
// manifest.xml
<receiver android:name=".MediaButtonIntentReceiver">
<intent-filter >
<action android:name="android.intent.action.MEDIA_BUTTON"/>
</intent-filter>
</receiver>
его работа для меня –
Это мой приемник, но он не работает, что случилось? общественного окончательный BroadcastReceiver hReceiver = новый BroadcastReceiver() { \t \t общественного недействительный OnReceive (контекст Контекста, Намерение намерения) { \t Строки действия = intent.getAction(); \t \t \t \t Intent mediaButtonIntent = новое намерение (Intent.ACTION_MEDIA_BUTTON); \t \t если (mediaButtonIntent.equals (действие)) \t { \t \t adapter.add ("щелчок"); \t} \t \t} \t}; – PatLas
@ user1320033: Вам не нужно проверять свою строку действий, если вы используете этот «BroadcastReceiver» один раз с помощью правого «IntentFilter». Кроме того, вы тестируете его неправильно. – CommonsWare
Итак, что мне делать, чтобы проверить его правильно? – PatLas