我需要在我的应用程序中检测蓝牙设备按钮。我遵循了许多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>
任何人都可以建议出路吗? 提前谢谢。
答案 0 :(得分:0)
您的API级别至少为11级吗?代码KEYCODE_MEDIA_PLAY在API级别11中添加.KEYCODE_MEDIA_PLAY_PAUSE代码自API级别3起存在。
另外,您是否尝试过配置意图过滤器而未指定类别?
您的RemoteControlReceiver类是否位于应用程序的根包中?它可能无法找到“.RemoteControlReceiver”。
除此之外,我看不出你在哪里做错了什么。
我在一些帖子中读过你可能还要调用registerMediaButtonEventReceiver和unregisterMediaButtonEventReceiver。你试过这个吗?
注册:
audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
componentName = new ComponentName(getPackageName(),
RemoteControlReceiver.class.getName());
audioManager.registerMediaButtonEventReceiver(componentName);
取消注册:
audioManager.unregisterMediaButtonEventReceiver(componentName);