From a7086bc66eca9bbae80fb40ec532b3253361ee53 Mon Sep 17 00:00:00 2001 From: Brandon Maxwell Date: Thu, 3 Dec 2015 13:51:10 -0800 Subject: Updating InCallUI to use CallAudioStateCompat Bug: 25776171 Change-Id: I94b42eb188e457a5470e33642cab2517949a8153 --- .../com/android/incallui/AudioModeProvider.java | 17 +++---- .../com/android/incallui/CallButtonFragment.java | 55 +++++++++++++--------- .../com/android/incallui/CallButtonPresenter.java | 27 +++++++---- .../com/android/incallui/InCallServiceImpl.java | 5 +- .../src/com/android/incallui/ProximitySensor.java | 14 +++--- 5 files changed, 70 insertions(+), 48 deletions(-) (limited to 'InCallUI') diff --git a/InCallUI/src/com/android/incallui/AudioModeProvider.java b/InCallUI/src/com/android/incallui/AudioModeProvider.java index e7ffecca7..961fb11ff 100644 --- a/InCallUI/src/com/android/incallui/AudioModeProvider.java +++ b/InCallUI/src/com/android/incallui/AudioModeProvider.java @@ -16,10 +16,10 @@ package com.android.incallui; -import android.telecom.CallAudioState; - import com.google.common.collect.Lists; +import com.android.dialer.compat.CallAudioStateCompat; + import java.util.List; /** @@ -30,19 +30,20 @@ public class AudioModeProvider { static final int AUDIO_MODE_INVALID = 0; private static AudioModeProvider sAudioModeProvider = new AudioModeProvider(); - private int mAudioMode = CallAudioState.ROUTE_EARPIECE; + private int mAudioMode = CallAudioStateCompat.ROUTE_EARPIECE; private boolean mMuted = false; - private int mSupportedModes = CallAudioState.ROUTE_EARPIECE | CallAudioState.ROUTE_BLUETOOTH | - CallAudioState.ROUTE_WIRED_HEADSET | CallAudioState.ROUTE_SPEAKER; + private int mSupportedModes = CallAudioStateCompat.ROUTE_EARPIECE + | CallAudioStateCompat.ROUTE_BLUETOOTH | CallAudioStateCompat.ROUTE_WIRED_HEADSET + | CallAudioStateCompat.ROUTE_SPEAKER; private final List mListeners = Lists.newArrayList(); public static AudioModeProvider getInstance() { return sAudioModeProvider; } - public void onAudioStateChanged(CallAudioState audioState) { - onAudioModeChange(audioState.getRoute(), audioState.isMuted()); - onSupportedAudioModeChange(audioState.getSupportedRouteMask()); + public void onAudioStateChanged(boolean isMuted, int route, int supportedRouteMask) { + onAudioModeChange(route, isMuted); + onSupportedAudioModeChange(supportedRouteMask); } public void onAudioModeChange(int newMode, boolean muted) { diff --git a/InCallUI/src/com/android/incallui/CallButtonFragment.java b/InCallUI/src/com/android/incallui/CallButtonFragment.java index 1d32d8f1d..653847486 100644 --- a/InCallUI/src/com/android/incallui/CallButtonFragment.java +++ b/InCallUI/src/com/android/incallui/CallButtonFragment.java @@ -16,18 +16,28 @@ package com.android.incallui; -import static com.android.incallui.CallButtonFragment.Buttons.*; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_ADD_CALL; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_AUDIO; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_COUNT; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_DIALPAD; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_HOLD; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_MANAGE_VIDEO_CONFERENCE; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_MERGE; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_MUTE; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_PAUSE_VIDEO; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_SWAP; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_SWITCH_CAMERA; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_UPGRADE_TO_VIDEO; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.Resources; import android.graphics.drawable.Drawable; -import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.GradientDrawable; +import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.RippleDrawable; import android.graphics.drawable.StateListDrawable; import android.os.Bundle; -import android.telecom.CallAudioState; import android.util.SparseIntArray; import android.view.ContextThemeWrapper; import android.view.HapticFeedbackConstants; @@ -43,6 +53,7 @@ import android.widget.PopupMenu.OnDismissListener; import android.widget.PopupMenu.OnMenuItemClickListener; import com.android.contacts.common.util.MaterialColorMapUtils.MaterialPalette; +import com.android.dialer.compat.CallAudioStateCompat; /** * Fragment for call control buttons @@ -516,20 +527,20 @@ public class CallButtonFragment Log.d(this, " id: " + item.getItemId()); Log.d(this, " title: '" + item.getTitle() + "'"); - int mode = CallAudioState.ROUTE_WIRED_OR_EARPIECE; + int mode = CallAudioStateCompat.ROUTE_WIRED_OR_EARPIECE; switch (item.getItemId()) { case R.id.audio_mode_speaker: - mode = CallAudioState.ROUTE_SPEAKER; + mode = CallAudioStateCompat.ROUTE_SPEAKER; break; case R.id.audio_mode_earpiece: case R.id.audio_mode_wired_headset: // InCallCallAudioState.ROUTE_EARPIECE means either the handset earpiece, // or the wired headset (if connected.) - mode = CallAudioState.ROUTE_WIRED_OR_EARPIECE; + mode = CallAudioStateCompat.ROUTE_WIRED_OR_EARPIECE; break; case R.id.audio_mode_bluetooth: - mode = CallAudioState.ROUTE_BLUETOOTH; + mode = CallAudioStateCompat.ROUTE_BLUETOOTH; break; default: Log.e(this, "onMenuItemClick: unexpected View ID " + item.getItemId() @@ -559,9 +570,9 @@ public class CallButtonFragment */ private void onAudioButtonClicked() { Log.d(this, "onAudioButtonClicked: " + - CallAudioState.audioRouteToString(getPresenter().getSupportedAudio())); + CallAudioStateCompat.audioRouteToString(getPresenter().getSupportedAudio())); - if (isSupported(CallAudioState.ROUTE_BLUETOOTH)) { + if (isSupported(CallAudioStateCompat.ROUTE_BLUETOOTH)) { showAudioModePopup(); } else { getPresenter().toggleSpeakerphone(); @@ -596,8 +607,8 @@ public class CallButtonFragment * are visible based on the supported audio formats. */ private void updateAudioButtons(int supportedModes) { - final boolean bluetoothSupported = isSupported(CallAudioState.ROUTE_BLUETOOTH); - final boolean speakerSupported = isSupported(CallAudioState.ROUTE_SPEAKER); + final boolean bluetoothSupported = isSupported(CallAudioStateCompat.ROUTE_BLUETOOTH); + final boolean speakerSupported = isSupported(CallAudioStateCompat.ROUTE_SPEAKER); boolean audioButtonEnabled = false; boolean audioButtonChecked = false; @@ -617,9 +628,9 @@ public class CallButtonFragment showMoreIndicator = true; // Update desired layers: - if (isAudio(CallAudioState.ROUTE_BLUETOOTH)) { + if (isAudio(CallAudioStateCompat.ROUTE_BLUETOOTH)) { showBluetoothIcon = true; - } else if (isAudio(CallAudioState.ROUTE_SPEAKER)) { + } else if (isAudio(CallAudioStateCompat.ROUTE_SPEAKER)) { showSpeakerphoneIcon = true; } else { showHandsetIcon = true; @@ -638,7 +649,7 @@ public class CallButtonFragment // The audio button *is* a toggle in this state, and indicated the // current state of the speakerphone. - audioButtonChecked = isAudio(CallAudioState.ROUTE_SPEAKER); + audioButtonChecked = isAudio(CallAudioStateCompat.ROUTE_SPEAKER); mAudioButton.setSelected(audioButtonChecked); // update desired layers: @@ -699,20 +710,20 @@ public class CallButtonFragment // If bluetooth is not supported, the audio buttion will toggle, so use the label "speaker". // Otherwise, use the label of the currently selected audio mode. - if (!isSupported(CallAudioState.ROUTE_BLUETOOTH)) { + if (!isSupported(CallAudioStateCompat.ROUTE_BLUETOOTH)) { stringId = R.string.audio_mode_speaker; } else { switch (mode) { - case CallAudioState.ROUTE_EARPIECE: + case CallAudioStateCompat.ROUTE_EARPIECE: stringId = R.string.audio_mode_earpiece; break; - case CallAudioState.ROUTE_BLUETOOTH: + case CallAudioStateCompat.ROUTE_BLUETOOTH: stringId = R.string.audio_mode_bluetooth; break; - case CallAudioState.ROUTE_WIRED_HEADSET: + case CallAudioStateCompat.ROUTE_WIRED_HEADSET: stringId = R.string.audio_mode_wired_headset; break; - case CallAudioState.ROUTE_SPEAKER: + case CallAudioStateCompat.ROUTE_SPEAKER: stringId = R.string.audio_mode_speaker; break; } @@ -742,7 +753,7 @@ public class CallButtonFragment // See comments below for the exact logic. final MenuItem speakerItem = menu.findItem(R.id.audio_mode_speaker); - speakerItem.setEnabled(isSupported(CallAudioState.ROUTE_SPEAKER)); + speakerItem.setEnabled(isSupported(CallAudioStateCompat.ROUTE_SPEAKER)); // TODO: Show speakerItem as initially "selected" if // speaker is on. @@ -751,7 +762,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(CallAudioState.ROUTE_WIRED_HEADSET); + final boolean usingHeadset = isSupported(CallAudioStateCompat.ROUTE_WIRED_HEADSET); earpieceItem.setVisible(!usingHeadset); earpieceItem.setEnabled(!usingHeadset); wiredHeadsetItem.setVisible(usingHeadset); @@ -761,7 +772,7 @@ public class CallButtonFragment // bluetoothIndicatorOn are both false. final MenuItem bluetoothItem = menu.findItem(R.id.audio_mode_bluetooth); - bluetoothItem.setEnabled(isSupported(CallAudioState.ROUTE_BLUETOOTH)); + bluetoothItem.setEnabled(isSupported(CallAudioStateCompat.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 b0adafdb9..5375b5b5d 100644 --- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java +++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java @@ -16,23 +16,30 @@ package com.android.incallui; -import static com.android.incallui.CallButtonFragment.Buttons.*; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_ADD_CALL; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_AUDIO; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_DIALPAD; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_HOLD; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_MERGE; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_MUTE; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_PAUSE_VIDEO; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_SWAP; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_SWITCH_CAMERA; +import static com.android.incallui.CallButtonFragment.Buttons.BUTTON_UPGRADE_TO_VIDEO; import android.content.Context; import android.os.Bundle; -import android.telecom.CallAudioState; import android.telecom.InCallService.VideoCall; import android.telecom.VideoProfile; +import com.android.dialer.compat.CallAudioStateCompat; import com.android.incallui.AudioModeProvider.AudioModeListener; import com.android.incallui.InCallCameraManager.Listener; import com.android.incallui.InCallPresenter.CanAddCallListener; +import com.android.incallui.InCallPresenter.InCallDetailsListener; import com.android.incallui.InCallPresenter.InCallState; import com.android.incallui.InCallPresenter.InCallStateListener; import com.android.incallui.InCallPresenter.IncomingCallListener; -import com.android.incallui.InCallPresenter.InCallDetailsListener; - -import java.util.Objects; /** * Logic for call buttons. @@ -177,7 +184,7 @@ public class CallButtonPresenter extends Presenter