summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSantos Cordon <santoscordon@google.com>2014-08-05 23:43:31 -0700
committerSantos Cordon <santoscordon@google.com>2014-08-05 23:43:31 -0700
commit12bccb9d6fa9f5e1daff8d51a0527dbdfb8606bd (patch)
tree3b88bf915da3832b557a36dbcb4dd35e768bb99a
parent164075975ba3ccabb9fcc3d78c6c5f5c1d281e10 (diff)
Remove hardcoded audio route in video provider.
The video provider always calls exitVideo() and as a result always sets the audio mode to EARPIECE when any call starts, negating any automatic setting done by telecomm (like bluetooth). This change has three items: 1. Only set the audio mode if we are exiting a previously entered video call. 2. When setting audio on exit, set it to the mode that was previously saved when the video call was entered. 3. Convert usages of the private AudioMode to the public CallStateAudio. Change-Id: I484ea8fadc9b7cf43692b517c97f906918fc49f8
-rw-r--r--InCallUI/src/com/android/incallui/AudioModeProvider.java8
-rw-r--r--InCallUI/src/com/android/incallui/CallButtonFragment.java34
-rw-r--r--InCallUI/src/com/android/incallui/CallButtonPresenter.java12
-rw-r--r--InCallUI/src/com/android/incallui/ProximitySensor.java12
-rw-r--r--InCallUI/src/com/android/incallui/VideoCallPresenter.java30
5 files changed, 53 insertions, 43 deletions
diff --git a/InCallUI/src/com/android/incallui/AudioModeProvider.java b/InCallUI/src/com/android/incallui/AudioModeProvider.java
index f3c7da623..2b61642c8 100644
--- a/InCallUI/src/com/android/incallui/AudioModeProvider.java
+++ b/InCallUI/src/com/android/incallui/AudioModeProvider.java
@@ -18,8 +18,6 @@ package com.android.incallui;
import com.google.common.collect.Lists;
-import com.android.services.telephony.common.AudioMode;
-
import android.telecomm.CallAudioState;
import android.telecomm.Phone;
@@ -30,10 +28,12 @@ import java.util.List;
*/
/* package */ class AudioModeProvider implements InCallPhoneListener {
+ static final int AUDIO_MODE_INVALID = 0;
+
private static AudioModeProvider sAudioModeProvider = new AudioModeProvider();
- private int mAudioMode = AudioMode.EARPIECE;
+ private int mAudioMode = CallAudioState.ROUTE_EARPIECE;
private boolean mMuted = false;
- private int mSupportedModes = AudioMode.ALL_MODES;
+ private int mSupportedModes = CallAudioState.ROUTE_ALL;
private final List<AudioModeListener> mListeners = Lists.newArrayList();
private Phone mPhone;
diff --git a/InCallUI/src/com/android/incallui/CallButtonFragment.java b/InCallUI/src/com/android/incallui/CallButtonFragment.java
index e07086879..16eaa68b0 100644
--- a/InCallUI/src/com/android/incallui/CallButtonFragment.java
+++ b/InCallUI/src/com/android/incallui/CallButtonFragment.java
@@ -18,6 +18,8 @@ package com.android.incallui;
import android.graphics.drawable.LayerDrawable;
import android.os.Bundle;
+
+import android.telecomm.CallAudioState;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -31,8 +33,6 @@ import android.widget.PopupMenu;
import android.widget.PopupMenu.OnDismissListener;
import android.widget.PopupMenu.OnMenuItemClickListener;
-import com.android.services.telephony.common.AudioMode;
-
/**
* Fragment for call control buttons
*/
@@ -386,20 +386,20 @@ public class CallButtonFragment
Log.d(this, " id: " + item.getItemId());
Log.d(this, " title: '" + item.getTitle() + "'");
- int mode = AudioMode.WIRED_OR_EARPIECE;
+ int mode = CallAudioState.ROUTE_WIRED_OR_EARPIECE;
switch (item.getItemId()) {
case R.id.audio_mode_speaker:
- mode = AudioMode.SPEAKER;
+ mode = CallAudioState.ROUTE_SPEAKER;
break;
case R.id.audio_mode_earpiece:
case R.id.audio_mode_wired_headset:
- // InCallAudioMode.EARPIECE means either the handset earpiece,
+ // InCallCallAudioState.ROUTE_EARPIECE means either the handset earpiece,
// or the wired headset (if connected.)
- mode = AudioMode.WIRED_OR_EARPIECE;
+ mode = CallAudioState.ROUTE_WIRED_OR_EARPIECE;
break;
case R.id.audio_mode_bluetooth:
- mode = AudioMode.BLUETOOTH;
+ mode = CallAudioState.ROUTE_BLUETOOTH;
break;
default:
Log.e(this, "onMenuItemClick: unexpected View ID " + item.getItemId()
@@ -428,9 +428,9 @@ public class CallButtonFragment
*/
private void onAudioButtonClicked() {
Log.d(this, "onAudioButtonClicked: " +
- AudioMode.toString(getPresenter().getSupportedAudio()));
+ CallAudioState.audioRouteToString(getPresenter().getSupportedAudio()));
- if (isSupported(AudioMode.BLUETOOTH)) {
+ if (isSupported(CallAudioState.ROUTE_BLUETOOTH)) {
showAudioModePopup();
} else {
getPresenter().toggleSpeakerphone();
@@ -460,8 +460,8 @@ public class CallButtonFragment
* are visible based on the supported audio formats.
*/
private void updateAudioButtons(int supportedModes) {
- final boolean bluetoothSupported = isSupported(AudioMode.BLUETOOTH);
- final boolean speakerSupported = isSupported(AudioMode.SPEAKER);
+ final boolean bluetoothSupported = isSupported(CallAudioState.ROUTE_BLUETOOTH);
+ final boolean speakerSupported = isSupported(CallAudioState.ROUTE_SPEAKER);
boolean audioButtonEnabled = false;
boolean audioButtonChecked = false;
@@ -483,9 +483,9 @@ public class CallButtonFragment
// btn_compound_background layer anyway.)
// Update desired layers:
- if (isAudio(AudioMode.BLUETOOTH)) {
+ if (isAudio(CallAudioState.ROUTE_BLUETOOTH)) {
showBluetoothIcon = true;
- } else if (isAudio(AudioMode.SPEAKER)) {
+ } else if (isAudio(CallAudioState.ROUTE_SPEAKER)) {
showSpeakerphoneIcon = true;
} else {
showHandsetIcon = true;
@@ -501,7 +501,7 @@ public class CallButtonFragment
// The audio button *is* a toggle in this state, and indicated the
// current state of the speakerphone.
- audioButtonChecked = isAudio(AudioMode.SPEAKER);
+ audioButtonChecked = isAudio(CallAudioState.ROUTE_SPEAKER);
// update desired layers:
showToggleIndicator = true;
@@ -571,7 +571,7 @@ public class CallButtonFragment
// See comments below for the exact logic.
final MenuItem speakerItem = menu.findItem(R.id.audio_mode_speaker);
- speakerItem.setEnabled(isSupported(AudioMode.SPEAKER));
+ speakerItem.setEnabled(isSupported(CallAudioState.ROUTE_SPEAKER));
// TODO: Show speakerItem as initially "selected" if
// speaker is on.
@@ -580,7 +580,7 @@ public class CallButtonFragment
final MenuItem earpieceItem = menu.findItem(R.id.audio_mode_earpiece);
final MenuItem wiredHeadsetItem = menu.findItem(R.id.audio_mode_wired_headset);
- final boolean usingHeadset = isSupported(AudioMode.WIRED_HEADSET);
+ final boolean usingHeadset = isSupported(CallAudioState.ROUTE_WIRED_HEADSET);
earpieceItem.setVisible(!usingHeadset);
earpieceItem.setEnabled(!usingHeadset);
wiredHeadsetItem.setVisible(usingHeadset);
@@ -590,7 +590,7 @@ public class CallButtonFragment
// bluetoothIndicatorOn are both false.
final MenuItem bluetoothItem = menu.findItem(R.id.audio_mode_bluetooth);
- bluetoothItem.setEnabled(isSupported(AudioMode.BLUETOOTH));
+ bluetoothItem.setEnabled(isSupported(CallAudioState.ROUTE_BLUETOOTH));
// TODO: Show bluetoothItem as initially "selected" if
// bluetoothIndicatorOn is true.
diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
index 2e2ea4ebf..a995042b3 100644
--- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
@@ -16,6 +16,7 @@
package com.android.incallui;
+import android.telecomm.CallAudioState;
import android.telecomm.CallCapabilities;
import android.telecomm.InCallService.VideoCall;
import android.telecomm.VideoCallProfile;
@@ -26,7 +27,6 @@ import com.android.incallui.AudioModeProvider.AudioModeListener;
import com.android.incallui.InCallPresenter.InCallState;
import com.android.incallui.InCallPresenter.InCallStateListener;
import com.android.incallui.InCallPresenter.IncomingCallListener;
-import com.android.services.telephony.common.AudioMode;
import android.telephony.PhoneNumberUtils;
@@ -141,7 +141,7 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto
// an update for onAudioMode(). This will make UI response immediate
// if it turns out to be slow
- Log.d(this, "Sending new Audio Mode: " + AudioMode.toString(mode));
+ Log.d(this, "Sending new Audio Mode: " + CallAudioState.audioRouteToString(mode));
TelecommAdapter.getInstance().setAudioRoute(mode);
}
@@ -150,7 +150,7 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto
*/
public void toggleSpeakerphone() {
// this function should not be called if bluetooth is available
- if (0 != (AudioMode.BLUETOOTH & getSupportedAudio())) {
+ if (0 != (CallAudioState.ROUTE_BLUETOOTH & getSupportedAudio())) {
// It's clear the UI is wrong, so update the supported mode once again.
Log.e(this, "toggling speakerphone not allowed when bluetooth supported.");
@@ -158,11 +158,11 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto
return;
}
- int newMode = AudioMode.SPEAKER;
+ int newMode = CallAudioState.ROUTE_SPEAKER;
// if speakerphone is already on, change to wired/earpiece
- if (getAudioMode() == AudioMode.SPEAKER) {
- newMode = AudioMode.WIRED_OR_EARPIECE;
+ if (getAudioMode() == CallAudioState.ROUTE_SPEAKER) {
+ newMode = CallAudioState.ROUTE_WIRED_OR_EARPIECE;
}
setAudioMode(newMode);
diff --git a/InCallUI/src/com/android/incallui/ProximitySensor.java b/InCallUI/src/com/android/incallui/ProximitySensor.java
index fc783b2f5..768a71478 100644
--- a/InCallUI/src/com/android/incallui/ProximitySensor.java
+++ b/InCallUI/src/com/android/incallui/ProximitySensor.java
@@ -20,10 +20,11 @@ import android.content.Context;
import android.content.res.Configuration;
import android.os.PowerManager;
+import android.telecomm.CallAudioState;
+
import com.android.incallui.AudioModeProvider.AudioModeListener;
import com.android.incallui.InCallPresenter.InCallState;
import com.android.incallui.InCallPresenter.InCallStateListener;
-import com.android.services.telephony.common.AudioMode;
import com.google.common.base.Objects;
/**
@@ -176,9 +177,9 @@ public class ProximitySensor implements AccelerometerListener.OrientationListene
// turn proximity sensor off and turn screen on immediately if
// we are using a headset, the keyboard is open, or the device
// is being held in a horizontal position.
- boolean screenOnImmediately = (AudioMode.WIRED_HEADSET == audioMode
- || AudioMode.SPEAKER == audioMode
- || AudioMode.BLUETOOTH == audioMode
+ boolean screenOnImmediately = (CallAudioState.ROUTE_WIRED_HEADSET == audioMode
+ || CallAudioState.ROUTE_SPEAKER == audioMode
+ || CallAudioState.ROUTE_BLUETOOTH == audioMode
|| mIsHardKeyboardOpen);
// We do not keep the screen off when the user is outside in-call screen and we are
@@ -202,7 +203,8 @@ public class ProximitySensor implements AccelerometerListener.OrientationListene
.add("offhook", mIsPhoneOffhook ? 1 : 0)
.add("hor", horizontal ? 1 : 0)
.add("ui", mUiShowing ? 1 : 0)
- .add("aud", AudioMode.toString(audioMode)).toString());
+ .add("aud", CallAudioState.audioRouteToString(audioMode))
+ .toString());
if (mIsPhoneOffhook && !screenOnImmediately) {
Log.d(this, "Turning on proximity sensor");
diff --git a/InCallUI/src/com/android/incallui/VideoCallPresenter.java b/InCallUI/src/com/android/incallui/VideoCallPresenter.java
index 1d3e62b5b..77aa4ac0c 100644
--- a/InCallUI/src/com/android/incallui/VideoCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/VideoCallPresenter.java
@@ -16,20 +16,19 @@
package com.android.incallui;
-import com.google.common.base.Preconditions;
-import com.android.incallui.InCallVideoCallListenerNotifier.SurfaceChangeListener;
-import com.android.incallui.InCallVideoCallListenerNotifier.VideoEventListener;
-import com.android.incallui.InCallPresenter.InCallDetailsListener;
-import com.android.incallui.InCallPresenter.InCallOrientationListener;
-import com.android.incallui.InCallPresenter.InCallStateListener;
-import com.android.incallui.InCallPresenter.IncomingCallListener;
-
import android.content.Context;
import android.content.res.Configuration;
+import android.telecomm.CallAudioState;
import android.telecomm.InCallService.VideoCall;
import android.view.Surface;
-import com.android.services.telephony.common.AudioMode;
+import com.android.incallui.InCallPresenter.InCallDetailsListener;
+import com.android.incallui.InCallPresenter.InCallOrientationListener;
+import com.android.incallui.InCallPresenter.InCallStateListener;
+import com.android.incallui.InCallPresenter.IncomingCallListener;
+import com.android.incallui.InCallVideoCallListenerNotifier.SurfaceChangeListener;
+import com.android.incallui.InCallVideoCallListenerNotifier.VideoEventListener;
+import com.google.common.base.Preconditions;
import java.util.Objects;
@@ -142,6 +141,11 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi
private boolean mIsFullScreen = false;
/**
+ * Saves the audio mode which was selected prior to going into a video call.
+ */
+ private int mPreVideoAudioMode = AudioModeProvider.AUDIO_MODE_INVALID;
+
+ /**
* Initializes the presenter.
*
* @param context The current context.
@@ -410,7 +414,8 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi
}
}
- TelecommAdapter.getInstance().setAudioRoute(AudioMode.SPEAKER);
+ mPreVideoAudioMode = AudioModeProvider.getInstance().getAudioMode();
+ TelecommAdapter.getInstance().setAudioRoute(CallAudioState.ROUTE_SPEAKER);
}
/**
@@ -424,7 +429,10 @@ public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi
InCallPresenter.getInstance().setInCallAllowsOrientationChange(false);
ui.showVideoUi(false);
- TelecommAdapter.getInstance().setAudioRoute(AudioMode.WIRED_OR_EARPIECE);
+ if (mPreVideoAudioMode != AudioModeProvider.AUDIO_MODE_INVALID) {
+ TelecommAdapter.getInstance().setAudioRoute(mPreVideoAudioMode);
+ mPreVideoAudioMode = AudioModeProvider.AUDIO_MODE_INVALID;
+ }
}
/**