Disable the media button controls when in a call

This commit is contained in:
Christopher Eby 2010-04-08 14:52:14 -05:00
parent 9a982a709e
commit 605632f547
2 changed files with 13 additions and 3 deletions

View File

@ -23,6 +23,7 @@ import android.content.Intent;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.telephony.TelephonyManager;
public class MediaButtonReceiver extends BroadcastReceiver { public class MediaButtonReceiver extends BroadcastReceiver {
@Override @Override
@ -31,9 +32,12 @@ public class MediaButtonReceiver extends BroadcastReceiver {
if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) { if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
if (settings.getBoolean("media_button", true)) { if (settings.getBoolean("media_button", true)) {
intent.setClass(context, PlaybackService.class); TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
context.startService(intent); if (telephonyManager.getCallState() == TelephonyManager.CALL_STATE_IDLE) {
abortBroadcast(); intent.setClass(context, PlaybackService.class);
context.startService(intent);
abortBroadcast();
}
} }
} }
} }

View File

@ -105,6 +105,7 @@ public class PlaybackService extends Service implements Handler.Callback, MediaP
public InCallListener mCallListener; public InCallListener mCallListener;
private boolean mIgnoreNextUp; private boolean mIgnoreNextUp;
private boolean mLoaded; private boolean mLoaded;
private boolean mInCall;
private Method mIsWiredHeadsetOn; private Method mIsWiredHeadsetOn;
private Method mStartForeground; private Method mStartForeground;
@ -558,6 +559,9 @@ public class PlaybackService extends Service implements Handler.Callback, MediaP
private boolean handleMediaKey(KeyEvent event) private boolean handleMediaKey(KeyEvent event)
{ {
if (mInCall)
return false;
int action = event.getAction(); int action = event.getAction();
switch (event.getKeyCode()) { switch (event.getKeyCode()) {
@ -626,10 +630,12 @@ public class PlaybackService extends Service implements Handler.Callback, MediaP
switch (state) { switch (state) {
case TelephonyManager.CALL_STATE_RINGING: case TelephonyManager.CALL_STATE_RINGING:
case TelephonyManager.CALL_STATE_OFFHOOK: case TelephonyManager.CALL_STATE_OFFHOOK:
mInCall = true;
if (!mPlayingBeforeCall) if (!mPlayingBeforeCall)
mPlayingBeforeCall = unsetFlag(FLAG_PLAYING); mPlayingBeforeCall = unsetFlag(FLAG_PLAYING);
break; break;
case TelephonyManager.CALL_STATE_IDLE: case TelephonyManager.CALL_STATE_IDLE:
mInCall = false;
if (mPlayingBeforeCall) { if (mPlayingBeforeCall) {
setFlag(FLAG_PLAYING); setFlag(FLAG_PLAYING);
mPlayingBeforeCall = false; mPlayingBeforeCall = false;