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

Commit 69ac9887 authored by Jim Miller's avatar Jim Miller
Browse files

Fix 2336057: Provide a way for the user to return to a call from LockScreen.

This makes the "Emergency call" button dual-purpose. If there's a call in progress,
the button will show "Return to call" and take the user back to the call.
parent 277903f8
Loading
Loading
Loading
Loading
+45 −1
Original line number Original line Diff line number Diff line
@@ -17,15 +17,20 @@
package com.android.internal.widget;
package com.android.internal.widget;


import android.app.DevicePolicyManager;
import android.app.DevicePolicyManager;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Context;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.SystemClock;
import android.provider.Settings;
import android.provider.Settings;
import android.security.MessageDigest;
import android.security.MessageDigest;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.Log;
import android.util.Log;
import android.widget.Button;


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


import java.io.FileNotFoundException;
import java.io.FileNotFoundException;
@@ -675,4 +680,43 @@ public class LockPatternUtils {
            || (mode == MODE_PIN || mode == MODE_PASSWORD) && savedPasswordExists();
            || (mode == MODE_PIN || mode == MODE_PASSWORD) && savedPasswordExists();
        return secure;
        return secure;
    }
    }

    /**
     * Sets the text on the emergency button to indicate what action will be taken.
     * If there's currently a call in progress, the button will take them to the call
     * @param button the button to update
     */
    public void updateEmergencyCallButtonState(Button button) {
        int newState = TelephonyManager.getDefault().getCallState();
        int textId;
        if (newState == TelephonyManager.CALL_STATE_OFFHOOK) {
            // show "return to call" text and show phone icon
            textId = R.string.lockscreen_return_to_call;
            int phoneCallIcon = R.drawable.stat_sys_phone_call;
            button.setCompoundDrawablesWithIntrinsicBounds(phoneCallIcon, 0, 0, 0);
        } else {
            textId = R.string.lockscreen_emergency_call;
            int emergencyIcon = R.drawable.ic_emergency;
            button.setCompoundDrawablesWithIntrinsicBounds(emergencyIcon, 0, 0, 0);
        }
        button.setText(textId);
    }

    /**
     * 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;
    }
}
}
+2 −0
Original line number Original line Diff line number Diff line
@@ -1441,6 +1441,8 @@
    <string name="lockscreen_pattern_instructions">Draw pattern to unlock</string>
    <string name="lockscreen_pattern_instructions">Draw pattern to unlock</string>
    <!-- Button at the bottom of the unlock screen to make an emergency call. -->
    <!-- Button at the bottom of the unlock screen to make an emergency call. -->
    <string name="lockscreen_emergency_call">Emergency call</string>
    <string name="lockscreen_emergency_call">Emergency call</string>
    <!-- Button at the bottom of the unlock screen that lets the user return to a call -->
    <string name="lockscreen_return_to_call">Return to call</string>
    <!-- Shown to confirm that the user entered their lock pattern correctly. -->
    <!-- Shown to confirm that the user entered their lock pattern correctly. -->
    <string name="lockscreen_pattern_correct">Correct!</string>
    <string name="lockscreen_pattern_correct">Correct!</string>
    <!-- On the unlock pattern screen, shown when the user enters the wrong lock pattern and must try again. -->
    <!-- On the unlock pattern screen, shown when the user enters the wrong lock pattern and must try again. -->