我正在开发一个通话应用程序。所以我需要从蓝牙设备中选择/挂断电话。但我无法从蓝牙耳机获得按键事件。 我曾尝试广播和音频管理器,但只获得播放/暂停,前和下一个按钮回调。检测蓝牙耳机通话按钮按下android
public class MediaButtonIntentReceiver 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 (event == null) {
return;
}
if (event.getAction() == KeyEvent.ACTION_DOWN) {
//context.sendBroadcast(new Intent(Intents.ACTION_PLAYER_PAUSE));
}
}
}
}
menifest是
<receiver android:name=".net.MediaButtonIntentReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
我只需要得到该事件时,我的活动是活的,所以我必须使用onKeyDown和活动的dispatchKeyEvent方法太多,但似乎没有任何工作。它给了我相同的结果和以前。 必须有一个办法,导致系统手机应用程序获取启动拨号程序的此事件。请建议我一些有用的方法来做到这一点。
Thx的回复看起来像是阅读文档后正确的方式。但是我没有在dispatchKeyEvent中获取这个事件回调。您能否告诉我如何捕获这两个事件 – ADM
无法在dispatchKeyEvent中获取事件。你有没有试过这段代码?因为我检查它不工作 – ADM
@ADM是的,我在使用android 7.1的Android模拟器上的一个新项目中尝试了这一点。我使用'adb shell input keyevent 5'来模拟呼叫按钮。在这种情况下,5是呼叫按钮的KeyCode。 –