Disable the media button controls when in a call
This commit is contained in:
parent
9a982a709e
commit
605632f547
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user