0

我需要检测我的应用程序中的蓝牙设备按钮点击。我关注了许多 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>

任何人都可以提出出路吗?提前致谢。

4

1 回答 1

0

您的 API 级别至少为 11 级吗?API 级别 11 中添加了代码 KEYCODE_MEDIA_PLAY。 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);
于 2013-10-11T23:33:08.250 回答