mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);ComponentName rec = new ComponentName(getPackageName(),MediaButtonIntentReceiver.class.getName());mAudioManager.registerMediaButtonEventReceiver(rec);
先 注册 MediaButton的 Receiver
然后获取焦点 Listener 里面没有实现 。 只是看了下状态。
mAudioManager.requestAudioFocus(new OnAudioFocusChangeListener() {@Overridepublic void onAudioFocusChange(int focusChange) {//操作待定switch (focusChange) {case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:// Pause playbackSystemLog.error(CLASS_NAME, "onAudioFocusChange", "AUDIOFOCUS_LOSS_TRANSIENT");break;case AudioManager.AUDIOFOCUS_LOSS:// am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);// am.abandonAudioFocus(afChangeListener);// // Stop playbackSystemLog.error(CLASS_NAME, "onAudioFocusChange", "AUDIOFOCUS_LOSS");break;case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:// Lower the volumeSystemLog.error(CLASS_NAME, "onAudioFocusChange", "AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK");break;case AudioManager.AUDIOFOCUS_GAIN:// Resume playback or Raise it back to normalSystemLog.error(CLASS_NAME, "onAudioFocusChange", "AUDIOFOCUS_GAIN");break;}}} , AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);//AudioManager.AUDIOFOCUS_GAIN持续获取焦点
使 当前的 receiver 持续获得焦点。 这样可以 防止 AudioManager QQreceivermAudioManagerreceiver
,天不负;卧薪尝胆,三千越甲可吞吴。