From 4dd87271790fece6e46478c226b3bb53ca9e2087 Mon Sep 17 00:00:00 2001 From: Lorenzo Braghetto Date: Tue, 7 Feb 2012 22:19:03 +0100 Subject: [PATCH] "Play when headset is plugged" support --- .../android/music/MediaPlaybackService.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/com/android/music/MediaPlaybackService.java b/src/com/android/music/MediaPlaybackService.java index 44fc30be..d7e2d1e8 100644 --- a/src/com/android/music/MediaPlaybackService.java +++ b/src/com/android/music/MediaPlaybackService.java @@ -225,6 +225,8 @@ public class MediaPlaybackService extends Service implements private RemoteControlClient mRemoteControlClient; private Timer timer = new Timer(); + private HeadsetReceiver headsetReceiver; + private Handler mMediaplayerHandler = new Handler() { @Override public void handleMessage(Message msg) { @@ -534,12 +536,21 @@ public void onCreate() { // case. Message msg = mDelayedStopHandler.obtainMessage(); mDelayedStopHandler.sendMessageDelayed(msg, IDLE_DELAY); + + //Headset + IntentFilter receiverFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG); + headsetReceiver = new HeadsetReceiver(); + registerReceiver( headsetReceiver, receiverFilter ); + mService = IMediaPlaybackService.Stub.asInterface(mBinder); } @Override public void onDestroy() { sensorMan.unregisterListener(this); + //headset + unregisterReceiver(headsetReceiver); + // Check that we're not being destroyed while something is still // playing. if (isPlaying()) { @@ -2813,4 +2824,21 @@ public void shakingStopped() { } + public class HeadsetReceiver extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + if (!isInitialStickyBroadcast() && intent.getAction().equals(Intent.ACTION_HEADSET_PLUG) && intent.getIntExtra("state", 0)==1) { + try { + if (mService != null) { + if (!mService.isPlaying()) { + mService.play(); + } + } + } catch (RemoteException ex) { + } + } + } + } + }