Android - 用于检测耳机按钮的广播接收器点击不能在API 23(棉花糖)上工作

时间:2016-06-02 09:04:22

标签: android broadcastreceiver

我正在使用广播接收器来检测耳机按钮点击。以下是广播接收器的代码。

public class HeadSetButtonStateReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {

        if (intent.getAction().equals(Intent.ACTION_MEDIA_BUTTON)) {
            KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
            if (event != null) {
                int action = event.getAction();
                if (action == KeyEvent.ACTION_DOWN) {
                    Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show();
                    EventBus.getDefault().post(new HeadSetButtonEvent("1"));
                }
            }
        }

    }
}

它在API 22(棒棒糖)上运行良好,但它不适用于API 23(棉花糖设备)。我试着查看stackoverflow但没有找到任何东西。

2 个答案:

答案 0 :(得分:1)

尝试使用int

if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
    KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
    int intKey = event.getKeyCode();
}

您可能会为1个按钮获得2个不同的int值。

答案 1 :(得分:0)

 check the priority

 IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON); 
    MediaButtonIntentReceiver recev = new MediaButtonIntentReceiver();
    filter.setPriority(1000);  
    registerReceiver(recev , filter);