Allow ConnectionService to ask Telecomm for ringback
Cherry picked from branch lmp-preview-dev because checking the changes into master required an API update, whereas the relevant APIs are @hide-ed in the source branch.
Implements the necessary wiring to respond to a ConnectionService that
asks Telecomm to play ringbacks on its behalf.
Bug: 15190301
Change-Id: Ic6a6c031aa92df1f3587daf74f24d090cd21245b
(cherry picked from commit 50a57136b3aa876c8311b58e1e11720a337fe1cc)
diff --git a/src/com/android/telecomm/RingbackPlayer.java b/src/com/android/telecomm/RingbackPlayer.java
index 4bb8ff2..8fd6697 100644
--- a/src/com/android/telecomm/RingbackPlayer.java
+++ b/src/com/android/telecomm/RingbackPlayer.java
@@ -49,21 +49,6 @@
/** {@inheritDoc} */
@Override
- public void onCallStateChanged(Call call, CallState oldState, CallState newState) {
- // Only operate on the foreground call.
- if (mCallsManager.getForegroundCall() == call) {
-
- // Treat as ending or begining dialing based on the state transition.
- if (shouldStartRinging(call)) {
- startRingbackForCall(call);
- } else if (oldState == CallState.DIALING) {
- stopRingbackForCall(call);
- }
- }
- }
-
- /** {@inheritDoc} */
- @Override
public void onForegroundCallChanged(Call oldForegroundCall, Call newForegroundCall) {
if (oldForegroundCall != null) {
stopRingbackForCall(oldForegroundCall);
@@ -81,15 +66,20 @@
CallServiceWrapper newCallService) {
super.onCallServiceChanged(call, oldCallServiceWrapper, newCallService);
- // Only operate on the foreground call.
- if (mCallsManager.getForegroundCall() == call) {
+ // Treat as ending or begining dialing based on the state transition.
+ if (shouldStartRinging(call)) {
+ startRingbackForCall(call);
+ } else if (newCallService == null) {
+ stopRingbackForCall(call);
+ }
+ }
- // Treat as ending or begining dialing based on the state transition.
- if (shouldStartRinging(call)) {
- startRingbackForCall(call);
- } else if (newCallService == null) {
- stopRingbackForCall(call);
- }
+ @Override
+ public void onRequestingRingback(Call call, boolean ignored) {
+ if (shouldStartRinging(call)) {
+ startRingbackForCall(call);
+ } else {
+ stopRingbackForCall(call);
}
}
@@ -144,8 +134,10 @@
}
}
- private static boolean shouldStartRinging(Call call) {
+ private boolean shouldStartRinging(Call call) {
return call != null
- && call.getState() == CallState.DIALING;
+ && mCallsManager.getForegroundCall() == call
+ && call.getState() == CallState.DIALING
+ && call.isRequestingRingback();
}
}