Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3534ede5 authored by Santos Cordon's avatar Santos Cordon
Browse files

Update showCallScreen to use Telecomm (1/6)

- Add API methods to InCallService and ITelecommService.
- Remove old methods from ITelephony.
- Route the TelephonyManager methods through ITelecommService instead of
  ITelephony.
- Update Lock screen to use TelephonyManager instead of ITelephony.

Bug: 15008165
Change-Id: Ib674e2e48efaa1cc97d1513dc2c2b27fdb343657
parent eec8f0cb
Loading
Loading
Loading
Loading
+4 −13
Original line number Diff line number Diff line
@@ -43,7 +43,6 @@ import android.view.View;
import android.widget.Button;

import com.android.internal.R;
import com.android.internal.telephony.ITelephony;
import com.google.android.collect.Lists;

import java.security.MessageDigest;
@@ -1360,19 +1359,11 @@ public class LockPatternUtils {
    /**
     * Resumes a call in progress. Typically launched from the EmergencyCall button
     * on various lockscreens.
     *
     * @return true if we were able to tell InCallScreen to show.
     */
    public boolean resumeCall() {
        ITelephony phone = ITelephony.Stub.asInterface(ServiceManager.checkService("phone"));
        try {
            if (phone != null && phone.showCallScreen()) {
                return true;
            }
        } catch (RemoteException e) {
            // What can we do?
        }
        return false;
    public void resumeCall() {
        TelephonyManager telephonyManager =
                (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
        telephonyManager.showCallScreen();
    }

    private void finishBiometricWeak() {
+17 −0
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ public abstract class InCallService extends Service {
    private static final int MSG_SET_POST_DIAL = 4;
    private static final int MSG_SET_POST_DIAL_WAIT = 5;
    private static final int MSG_ON_AUDIO_STATE_CHANGED = 6;
    private static final int MSG_BRING_TO_FOREGROUND = 7;

    /** Default Handler used to consolidate binder method calls onto a single thread. */
    private final Handler mHandler = new Handler(Looper.getMainLooper()) {
@@ -83,6 +84,9 @@ public abstract class InCallService extends Service {
                case MSG_ON_AUDIO_STATE_CHANGED:
                    onAudioStateChanged((CallAudioState) msg.obj);
                    break;
                case MSG_BRING_TO_FOREGROUND:
                    bringToForeground(msg.arg1 == 1);
                    break;
                default:
                    break;
            }
@@ -130,6 +134,12 @@ public abstract class InCallService extends Service {
        public void onAudioStateChanged(CallAudioState audioState) {
            mHandler.obtainMessage(MSG_ON_AUDIO_STATE_CHANGED, audioState).sendToTarget();
        }

        /** {@inheritDoc} */
        @Override
        public void bringToForeground(boolean showDialpad) {
            mHandler.obtainMessage(MSG_BRING_TO_FOREGROUND, showDialpad ? 1 : 0, 0).sendToTarget();
        }
    }

    private final InCallServiceBinder mBinder;
@@ -206,4 +216,11 @@ public abstract class InCallService extends Service {
     * @param audioState The new {@link CallAudioState}.
     */
    protected abstract void onAudioStateChanged(CallAudioState audioState);

    /**
     * Brings the in-call screen to the foreground.
     *
     * @param showDialpad If true, put up the dialpad when the screen is shown.
     */
    protected abstract void bringToForeground(boolean showDialpad);
}
+2 −0
Original line number Diff line number Diff line
@@ -40,4 +40,6 @@ oneway interface IInCallService {
    void setPostDialWait(String callId, String remaining);

    void onAudioStateChanged(in CallAudioState audioState);

    void bringToForeground(boolean showDialpad);
}
+8 −1
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ package com.android.internal.telecomm;
 * commands that were previously handled by ITelephony.
 * {@hide}
 */
oneway interface ITelecommService {
interface ITelecommService {

    /**
     * Silence the ringer if an incoming call is currently ringing.
@@ -31,4 +31,11 @@ oneway interface ITelecommService {
     * even if there's no incoming call.  (If so, this method will do nothing.)
     */
    void silenceRinger();

    /**
     * Brings the in-call screen to the foreground if there is an active call.
     *
     * @param showDialpad if true, make the dialpad visible initially.
     */
    void showCallScreen(boolean showDialpad);
}
+6 −4
Original line number Diff line number Diff line
@@ -1980,9 +1980,10 @@ public class TelephonyManager {
    @PrivateApi
    public boolean showCallScreen() {
        try {
            return getITelephony().showCallScreen();
            getTelecommService().showCallScreen(false);
            return true;
        } catch (RemoteException e) {
            Log.e(TAG, "Error calling ITelephony#showCallScreen", e);
            Log.e(TAG, "Error calling ITelecommService#showCallScreen", e);
        }
        return false;
    }
@@ -1991,9 +1992,10 @@ public class TelephonyManager {
    @PrivateApi
    public boolean showCallScreenWithDialpad(boolean showDialpad) {
        try {
            return getITelephony().showCallScreenWithDialpad(showDialpad);
            getTelecommService().showCallScreen(showDialpad);
            return true;
        } catch (RemoteException e) {
            Log.e(TAG, "Error calling ITelephony#showCallScreenWithDialpad", e);
            Log.e(TAG, "Error calling ITelecommService#showCallScreen(" + showDialpad + ")", e);
        }
        return false;
    }
Loading