Android - 检测耳机按钮点击的广播接收器在 API 23(棉花糖)上不起作用
Android - Broadcast receiver to detect headset button click not working on API 23 (marshmallow)
我正在使用广播接收器来检测耳机按钮的点击。下面是广播接收器的代码。
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(棉花糖设备)上不起作用。我试图查看 Whosebug,但没有找到任何东西。
check the priority
IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
MediaButtonIntentReceiver recev = new MediaButtonIntentReceiver();
filter.setPriority(1000);
registerReceiver(recev , filter);
改用 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 值。
我正在使用广播接收器来检测耳机按钮的点击。下面是广播接收器的代码。
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(棉花糖设备)上不起作用。我试图查看 Whosebug,但没有找到任何东西。
check the priority
IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
MediaButtonIntentReceiver recev = new MediaButtonIntentReceiver();
filter.setPriority(1000);
registerReceiver(recev , filter);
改用 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 值。