summaryrefslogtreecommitdiff
path: root/java/com
diff options
context:
space:
mode:
authoryueg <yueg@google.com>2017-10-27 16:42:51 -0700
committerEric Erfanian <erfanian@google.com>2017-10-30 08:31:54 -0700
commit77cb8e5d86ebca9763cd06b5263dc02203576f40 (patch)
tree91eb0d0c0a0a58f09e5aa348cdf706f6c89e71e8 /java/com
parent31cac38fba0ba3396942ef069b3f710112bd4013 (diff)
Let InCallPresenter instead of StatusBarNotifier implement AudioModeListener.
The bug is caused by old StatusBarNotifier object cancelling new notification. Remove listener for InCallPresenter is safer than for StatusBarNotifer. Test: manual PiperOrigin-RevId: 173734079 Change-Id: Iefdc2d0e399da97bf31dbd5f99beb9ed34bcd874
Diffstat (limited to 'java/com')
-rw-r--r--java/com/android/incallui/InCallPresenter.java14
-rw-r--r--java/com/android/incallui/StatusBarNotifier.java7
2 files changed, 13 insertions, 8 deletions
diff --git a/java/com/android/incallui/InCallPresenter.java b/java/com/android/incallui/InCallPresenter.java
index ed7b2c290..6c1c13027 100644
--- a/java/com/android/incallui/InCallPresenter.java
+++ b/java/com/android/incallui/InCallPresenter.java
@@ -28,6 +28,7 @@ import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
import android.support.v4.os.UserManagerCompat;
import android.telecom.Call.Details;
+import android.telecom.CallAudioState;
import android.telecom.DisconnectCause;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
@@ -55,6 +56,7 @@ import com.android.dialer.telecom.TelecomUtil;
import com.android.dialer.util.TouchPointManager;
import com.android.incallui.InCallOrientationEventListener.ScreenOrientation;
import com.android.incallui.answerproximitysensor.PseudoScreenState;
+import com.android.incallui.audiomode.AudioModeProvider;
import com.android.incallui.call.CallList;
import com.android.incallui.call.DialerCall;
import com.android.incallui.call.ExternalCallList;
@@ -83,7 +85,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
* presenters that want to listen in on the in-call state changes. TODO: This class has become more
* of a state machine at this point. Consider renaming.
*/
-public class InCallPresenter implements CallList.Listener {
+public class InCallPresenter implements CallList.Listener, AudioModeProvider.AudioModeListener {
private static final String PIXEL2017_SYSTEM_FEATURE =
"com.google.android.feature.PIXEL_2017_EXPERIENCE";
private static final String EXTRA_FIRST_TIME_SHOWN =
@@ -387,6 +389,8 @@ public class InCallPresenter implements CallList.Listener {
.getSystemService(TelephonyManager.class)
.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
+ AudioModeProvider.getInstance().addListener(this);
+
LogUtil.d("InCallPresenter.setUp", "Finished InCallPresenter.setUp");
Trace.endSection();
}
@@ -410,6 +414,7 @@ public class InCallPresenter implements CallList.Listener {
attemptCleanup();
VideoPauseController.getInstance().tearDown();
+ AudioModeProvider.getInstance().removeListener(this);
}
private void attemptFinishActivity() {
@@ -1720,6 +1725,13 @@ public class InCallPresenter implements CallList.Listener {
}
}
+ @Override
+ public void onAudioStateChanged(CallAudioState audioState) {
+ if (mStatusBarNotifier != null) {
+ mStatusBarNotifier.updateNotification();
+ }
+ }
+
/** All the main states of InCallActivity. */
public enum InCallState {
// InCall Screen is off and there are no calls
diff --git a/java/com/android/incallui/StatusBarNotifier.java b/java/com/android/incallui/StatusBarNotifier.java
index bb3ef4333..db416d861 100644
--- a/java/com/android/incallui/StatusBarNotifier.java
+++ b/java/com/android/incallui/StatusBarNotifier.java
@@ -94,7 +94,6 @@ import java.util.Objects;
public class StatusBarNotifier
implements InCallPresenter.InCallStateListener,
EnrichedCallManager.StateChangedListener,
- AudioModeProvider.AudioModeListener,
ContactInfoCacheCallback {
private static final int NOTIFICATION_ID = 1;
@@ -136,7 +135,6 @@ public class StatusBarNotifier
new InCallTonePlayer(new ToneGeneratorFactory(), new PausableExecutorImpl()),
CallList.getInstance());
mCurrentNotification = NOTIFICATION_NONE;
- AudioModeProvider.getInstance().addListener(this);
Trace.endSection();
}
@@ -1028,11 +1026,6 @@ public class StatusBarNotifier
}
@Override
- public void onAudioStateChanged(CallAudioState audioState) {
- updateNotification();
- }
-
- @Override
@RequiresPermission(Manifest.permission.READ_PHONE_STATE)
public void onContactInfoComplete(String callId, ContactCacheEntry entry) {
DialerCall call = CallList.getInstance().getCallById(callId);