android action_media_button,android – 每次MediaButton点击时,ACTION_MEDIA_BUTTON意图的BroadcastReceiver会触发TWI...

我有一个简单但可能结构糟糕的

Android应用程序.

它由两个java类组成:MainActivity扩展Activity,以及扩展BroadcastReceiver的RemoteControlReceiver.

问题是每当我按下蓝牙遥控器上的媒体按钮(播放/暂停,下一个,上一个)时,broadcastReceiver的onReceive()方法会运行两次.或者更具体地说,整个RemoteControlReceiver被初始化为对象,对象的onReceive()方法运行,对象被废弃,并重复.

我通过放置一个静态int mult = 0测试了这个;在MainActivity中.每次运行onReceive时,我都会将mult增加1.每按一次按钮,它会增加两次.

我不确定是什么导致它运行两次.硬件是否每次点击发送双重信号,或者操作系统是否为每个信号发送多个媒体按钮意图,或者我的广播接收器是否按意图运行两次?

我的MediaButtonReceiver代码:

public class RemoteControlReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

if(Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())){

KeyEvent Xevent = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);

int keyType = Xevent.getKeyCode();

Intent i = new Intent();

i.setAction("com.MainActivity.Shakey.MEDIA_BUTTON");

i.putExtra("keyType", keyType);

context.sendBroadcast(i);

Toast.makeText(context, String.valueOf(MainActivity.mult), Toast.LENGTH_SHORT).show();

MainActivity.mult++;

abortBroadcast();

}

}

}

此接收者的过滤器在Manifest中注册如下:

06001

The Broadcastreceiver is dynamically registered to the AudioManager object in the MainActivity’s onResume(). And it is unregistered in onPause(). As the links said this is a sure way to get 1st priority on the media_button intents.

I know I can ignore every even call of the broadcastReceiver by the use of a static variable. But I would like to know the cause of this issue.

PS

播放/暂停/上一个/下一个按钮适用于默认的Android音乐播放器.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值