java– 如果按一下Headset按钮,android.intent.action.MEDIA_BUTTON事件会触发两次

java– 如果按一下Headset按钮,android.intent.action.MEDIA_BUTTON事件会触发两次,第1张

概述当按下耳机媒体按钮时,我已经编写了一个显示Toast的代码.我使用了意图过滤器来完成它.但问题是当我按下媒体按钮时它会发射两次.我的代码是:MainActivity.javaprivateMusicIntentReceivermyReceiver;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){su

当按下耳机媒体按钮时,我已经编写了一个显示Toast的代码.我使用了意图过滤器来完成它.但问题是当我按下媒体按钮时它会发射两次.
我的代码是:

MainActivity.java

private MusicIntentReceiver myReceiver;@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);    myReceiver=new MusicIntentReceiver();    ((AudioManager)getSystemService(AUdio_SERVICE)).registerMediabuttonEventReceiver(new Componentname(            this,            MusicIntentReceiver.class));}@OverrIDepublic voID onResume(){    IntentFilter filter = new IntentFilter(Intent.ACTION_headSET_PLUG);    IntentFilter filter1=new IntentFilter(Intent.ACTION_MEDIA_button);    filter1.setPriority(100);    registerReceiver(myReceiver, filter);    registerReceiver(myReceiver,filter1);    super.onResume();}@OverrIDepublic voID onPause() {    IntentFilter filter = new IntentFilter(Intent.ACTION_headSET_PLUG);    IntentFilter filter1=new IntentFilter(Intent.ACTION_MEDIA_button);    filter1.setPriority(100);    registerReceiver(myReceiver, filter);    registerReceiver(myReceiver,filter1);    super.onPause();}

broadcastReceiver.java

public class MusicIntentReceiver extends broadcastReceiver {    @OverrIDe    public voID onReceive(Context context, Intent intent) {        String intentAction=intent.getAction();        Toast.makeText(context, "Action: "+intentAction, Toast.LENGTH_SHORT).show();        if (!Intent.ACTION_MEDIA_button.equals(intentAction)) {            return;        }        Toast.makeText(context, "button pressed!", Toast.LENGTH_SHORT).show();        abortbroadcast();    }}

解决方法:

一旦按下按钮,一次按钮按下.

  KeyEvent keyEvent  = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);  if (keyEvent != null) {      if (event.getAction() == KeyEvent.ACTION_UP)      {           switch(keyEvent.getKeyCode()) {           case KeyEvent.KEYCODE_MEDIA_PLAY:                  .... &c.            }      }    }
总结

以上是内存溢出为你收集整理的java – 如果按一下Headset按钮,android.intent.action.MEDIA_BUTTON事件会触发两次全部内容,希望文章能够帮你解决java – 如果按一下Headset按钮,android.intent.action.MEDIA_BUTTON事件会触发两次所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1114984.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存