簡體   English   中英

如何在Android應用程序中檢測藍牙通話/媒體按鈕按下

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM