[英]How to detect bluetooth call/media button press in android app
我需要檢測我的應用程序中的藍牙設備按鈕單擊。 我遵循了許多stackoverflow鏈接,但似乎對我不起作用。
我正在使用廣播接收機,如下所示:
public class RemoteControlReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (KeyEvent.KEYCODE_MEDIA_PLAY == event.getKeyCode()) {
//call my method
}
}
}
}
我的清單如下:
<receiver android:name=".RemoteControlReceiver" >
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
有人可以建議出路嗎? 提前致謝。
您的API級別至少為11? API級別11中添加了代碼KEYCODE_MEDIA_PLAY。自API級別3起,存在KEYCODE_MEDIA_PLAY_PAUSE代碼。
另外,您是否嘗試在未指定類別的情況下配置意圖過濾器?
您的RemoteControlReceiver類是否在應用程序的根包中? 可能找不到“ .RemoteControlReceiver”。
除此之外,我看不到您在哪里做錯了什么。
我讀過幾篇文章,您可能還必須調用registerMediaButtonEventReceiver和unregisterMediaButtonEventReceiver。 你有嘗試過嗎?
要注冊:
audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
componentName = new ComponentName(getPackageName(),
RemoteControlReceiver.class.getName());
audioManager.registerMediaButtonEventReceiver(componentName);
並注銷:
audioManager.unregisterMediaButtonEventReceiver(componentName);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.