当按下耳机媒体按钮时,我已经编写了一个显示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事件会触发两次所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)