本文主要实现监听耳机的中间按键,搞了很久,才明白,要动态注册与静态注册结合才可以实现耳机中键的监听。
代码如下。
耳机中键监听广播接收类:
public class MediaButtonIntentReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event == null) {
return;
}
int keycode = event.getKeyCode();
if(keycode==79){//耳机中键
Log.v("ss","接收到按键");
}
}
}
public class ListenActivity extends Activity {
private AudioManager mAudioManager;
private ComponentName rec;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
rec = new ComponentName(getPackageName(), MediaButtonIntentReceiver.class.getName());
mAudioManager.registerMediaButtonEventReceiver(rec);
}
@Override
public void onDestroy() {
super.onDestroy();
mAudioManager.unregisterMediaButtonEventReceiver(rec);
}
}
静态注册:
<receiver android:name="com.cai.MediaButtonIntentReceiver" >
<intent-filter android:priority="2147483647" >
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>