package com.music.you.tube.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.view.KeyEvent;
import com.music.you.tube.player.PlayService;
import com.music.you.tube.util.Actions;
/**
* 耳机线控
*/
public class RemoteControlReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
KeyEvent event = intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event == null || event.getAction() != KeyEvent.ACTION_UP) {
return;
}
Intent serviceIntent;
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_MEDIA_PLAY:
case KeyEvent.KEYCODE_MEDIA_PAUSE:
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
case KeyEvent.KEYCODE_HEADSETHOOK:
serviceIntent = new Intent(context, PlayService.class);
serviceIntent.setAction(Actions.ACTION_MEDIA_PLAY_PAUSE);
context.startService(serviceIntent);
break;
case KeyEvent.KEYCODE_MEDIA_NEXT:
serviceIntent = new Intent(context, PlayService.class);
serviceIntent.setAction(Actions.ACTION_MEDIA_NEXT);
context.startService(serviceIntent);
break;
case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
serviceIntent = new Intent(context, PlayService.class);
serviceIntent.setAction(Actions.ACTION_MEDIA_PREVIOUS);
context.startService(serviceIntent);
break;
}
}
}
<receiver android:name="com.music.you.tube.receiver.RemoteControlReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
package com.music.you.tube.util;
/**
* Actions
*/
public class Actions {
public static final String ACTION_MEDIA_PLAY_PAUSE = "podcast.music.ACTION_MEDIA_PLAY_PAUSE";
public static final String ACTION_MEDIA_HEADSET = "podcast.music.ACTION_MEDIA_HEADSET";
public static final String ACTION_MEDIA_NEXT = "podcast.music.ACTION_MEDIA_NEXT";
public static final String ACTION_MEDIA_PREVIOUS = "podcast.music.ACTION_MEDIA_PREVIOUS";
public static final String VOLUME_CHANGED_ACTION = "android.media.VOLUME_CHANGED_ACTION";
}
//实例 : 注册和接收广播在service中 也可以在activity中
private ComponentName mRemoteReceiver;
mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
mRemoteReceiver = new ComponentName(getPackageName(), RemoteControlReceiver.class.getName());
mAudioManager.registerMediaButtonEventReceiver(mRemoteReceiver);
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent == null || intent.getAction() == null) {
return START_NOT_STICKY;
}
switch (intent.getAction()) {
case Actions.ACTION_MEDIA_HEADSET:
if (getCurrentState() == YoutubePlayerView.STATE.PLAYING) {
pause();
}
break;
case Actions.ACTION_MEDIA_PLAY_PAUSE:
if (getCurrentState() == YoutubePlayerView.STATE.PLAYING) {
pause();
} else if (getCurrentState() == YoutubePlayerView.STATE.PAUSED) {
play();
} else if (getCurrentState() == YoutubePlayerView.STATE.BUFFERING) {
stop();
} else if (getCurrentState() == YoutubePlayerView.STATE.CUED) {
stop();
} else if (getCurrentState() == YoutubePlayerView.STATE.ENDED) {
pause();
} else if (getCurrentState() == YoutubePlayerView.STATE.NONE) {
stop();
} else if (getCurrentState() == YoutubePlayerView.STATE.UNSTARTED) {
stop();
}
break;
case Actions.ACTION_MEDIA_NEXT:
next();
break;
case Actions.ACTION_MEDIA_PREVIOUS:
prev();
break;
}
return START_NOT_STICKY;
}
mAudioManager.unregisterMediaButtonEventReceiver(mRemoteReceiver);