需求是监听耳机(蓝牙或有线)上的按键,并且触发相应的事件,我来做处理。
问题1.
注册不上"<uses-permission android:name=\"android.permission.MEDIA_BUTTON\"/>"
(是否没有封装此注册?)
问题2.
监听不到事件,filter.addAction(Intent.ACTION_MEDIA_BUTTON);
问题3.
在监听事件处理当中。总是在KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);报错。
有谁做过同类需求。或者官方有关于MEDIA_BUTTON的帮助、实例之类的?
以下是完整代码实例
var receiver;
mui.plusReady(function() {
main = plus.android.runtimeMainActivity(); //获取activity
// 广播接收
receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
onReceive: function(context, intent) { //实现onReceiver回调函数
var Intent = plus.android.importClass('android.content.Intent');
var KeyEvent = plus.android.importClass('android.view.KeyEvent');
console.log(Intent.EXTRA_KEY_EVENT);
KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
action = intent.getAction();
if (Intent.ACTION_MEDIA_BUTTON.equals(action)) {
// 获得按键码
int keycode = event.getKeyCode();
switch (keycode) {
case KeyEvent.KEYCODE_MEDIA_NEXT:
//播放下一首
console.log("下一曲");
break;
case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
//播放上一首
console.log("上一曲");
break;
case KeyEvent.KEYCODE_HEADSETHOOK:
//中间按钮,暂停or播放
console.log("播放/暂停");
//可以通过发送一个新的广播通知正在播放的视频页面,暂停或者播放视频
break;
default:
break;
}
}
//停止监听
//main.unregisterReceiver(receiver);
}
});
var IntentFilter = plus.android.importClass('android.content.IntentFilter');
var Intent = plus.android.importClass('android.content.Intent');
var filter = new IntentFilter();
filter.addAction(Intent.ACTION_MEDIA_BUTTON);
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_USER_PRESENT);
main.registerReceiver(receiver, filter); //注册监听
});
3 个回复
1***@qq.com
请问您这个问题解决了吗
cnbany - cnbany
同问,如何实现监听蓝牙耳机的按键
z***@qq.com
用这个插件试试:
https://ext.dcloud.net.cn/plugin?id=3577