Loading packages/Keyguard/src/com/android/keyguard/EmergencyButton.java +26 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import android.content.Intent; import android.os.PowerManager; import android.os.SystemClock; import android.os.UserHandle; import android.telephony.MSimTelephonyManager; import android.telephony.ServiceState; import android.telephony.TelephonyManager; import android.util.AttributeSet; import android.view.View; Loading @@ -39,6 +41,7 @@ public class EmergencyButton extends Button { private static final int EMERGENCY_CALL_TIMEOUT = 10000; // screen timeout after starting e.d. private static final String ACTION_EMERGENCY_DIAL = "com.android.phone.EmergencyDialer.DIAL"; private ServiceState mServiceState[]; KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() { Loading @@ -52,6 +55,13 @@ public class EmergencyButton extends Button { State simState = KeyguardUpdateMonitor.getInstance(mContext).getSimState(); updateEmergencyCallButton(simState, phoneState); }; void onServiceStateChanged(ServiceState state, int sub) { mServiceState[sub] = state; int phoneState = KeyguardUpdateMonitor.getInstance(mContext).getPhoneState(); State simState = KeyguardUpdateMonitor.getInstance(mContext).getSimState(); updateEmergencyCallButton(simState, phoneState); } }; private LockPatternUtils mLockPatternUtils; private PowerManager mPowerManager; Loading @@ -62,6 +72,8 @@ public class EmergencyButton extends Button { public EmergencyButton(Context context, AttributeSet attrs) { super(context, attrs); int numPhones = MSimTelephonyManager.getDefault().getPhoneCount(); mServiceState = new ServiceState[numPhones]; } @Override Loading @@ -88,9 +100,20 @@ public class EmergencyButton extends Button { }); int phoneState = KeyguardUpdateMonitor.getInstance(mContext).getPhoneState(); State simState = KeyguardUpdateMonitor.getInstance(mContext).getSimState(); mServiceState = KeyguardUpdateMonitor.getInstance(mContext).getServiceStates(); updateEmergencyCallButton(simState, phoneState); } private boolean canMakeEmergencyCall() { for (ServiceState state : mServiceState) { if ((state != null) && (state.isEmergencyOnly() || state.getVoiceRegState() != ServiceState.STATE_OUT_OF_SERVICE)) { return true; } } return false; } /** * Shows the emergency dialer or returns the user to the existing call. */ Loading Loading @@ -128,6 +151,9 @@ public class EmergencyButton extends Button { mContext.getResources().getBoolean(R.bool.config_showEmergencyButton); } } if (mContext.getResources().getBoolean(R.bool.config_showEmergencyButton)) { enabled = enabled && canMakeEmergencyCall(); } mLockPatternUtils.updateEmergencyCallButtonState(this, phoneState, enabled, false); } Loading packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +21 −0 Original line number Diff line number Diff line Loading @@ -100,6 +100,7 @@ public class KeyguardUpdateMonitor { private static final int MSG_SCREEN_TURNED_ON = 319; private static final int MSG_SCREEN_TURNED_OFF = 320; private static final int MSG_AIRPLANE_MODE_CHANGED = 321; private static final int MSG_SERVICE_STATE_CHANGED = 322; private static KeyguardUpdateMonitor sInstance; Loading Loading @@ -211,6 +212,9 @@ public class KeyguardUpdateMonitor { case MSG_AIRPLANE_MODE_CHANGED: handleAirplaneModeChanged((Boolean) msg.obj); break; case MSG_SERVICE_STATE_CHANGED: handleServiceStateChanged((ServiceState) msg.obj, msg.arg1); break; } } }; Loading Loading @@ -334,6 +338,10 @@ public class KeyguardUpdateMonitor { Log.d(TAG, "ACTION_SERVICE_STATE_CHANGED on sub: " + sub + " showSpn:" + mShowSpn[sub] + " showPlmn:" + mShowPlmn[sub] + " mServiceState: " + mServiceState[sub]); final Message message = mHandler.obtainMessage(MSG_SERVICE_STATE_CHANGED, mServiceState[sub]); message.arg1 = sub; mHandler.sendMessage(message); //display 2G/3G/4G if operator ask for showing radio tech if ((mServiceState[sub] != null) && (mServiceState[sub].getDataRegState() == Loading Loading @@ -955,6 +963,15 @@ public class KeyguardUpdateMonitor { } } private void handleServiceStateChanged(ServiceState state, int sub) { for (int i = 0; i < mCallbacks.size(); i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { cb.onServiceStateChanged(state, sub); } } } /** * Handle {@link #MSG_CLOCK_VISIBILITY_CHANGED} */ Loading Loading @@ -1151,6 +1168,10 @@ public class KeyguardUpdateMonitor { return mSimState[subscription]; } public ServiceState[] getServiceStates() { return mServiceState; } public int getPinLockedSubscription() { int sub = -1; for (int i = 0; i < mSimState.length; i++) { Loading packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java +6 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.app.admin.DevicePolicyManager; import android.graphics.Bitmap; import android.media.AudioManager; import android.os.SystemClock; import android.telephony.ServiceState; import android.view.WindowManagerPolicy; import com.android.internal.telephony.IccCardConstants; Loading Loading @@ -197,4 +198,9 @@ class KeyguardUpdateMonitorCallback { * @param on Indicates if the airplane mode is now enable. */ void onAirplaneModeChanged(boolean on) { } /** * Called when the sevice state changes. */ void onServiceStateChanged(ServiceState state, int sub) { } } Loading
packages/Keyguard/src/com/android/keyguard/EmergencyButton.java +26 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import android.content.Intent; import android.os.PowerManager; import android.os.SystemClock; import android.os.UserHandle; import android.telephony.MSimTelephonyManager; import android.telephony.ServiceState; import android.telephony.TelephonyManager; import android.util.AttributeSet; import android.view.View; Loading @@ -39,6 +41,7 @@ public class EmergencyButton extends Button { private static final int EMERGENCY_CALL_TIMEOUT = 10000; // screen timeout after starting e.d. private static final String ACTION_EMERGENCY_DIAL = "com.android.phone.EmergencyDialer.DIAL"; private ServiceState mServiceState[]; KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() { Loading @@ -52,6 +55,13 @@ public class EmergencyButton extends Button { State simState = KeyguardUpdateMonitor.getInstance(mContext).getSimState(); updateEmergencyCallButton(simState, phoneState); }; void onServiceStateChanged(ServiceState state, int sub) { mServiceState[sub] = state; int phoneState = KeyguardUpdateMonitor.getInstance(mContext).getPhoneState(); State simState = KeyguardUpdateMonitor.getInstance(mContext).getSimState(); updateEmergencyCallButton(simState, phoneState); } }; private LockPatternUtils mLockPatternUtils; private PowerManager mPowerManager; Loading @@ -62,6 +72,8 @@ public class EmergencyButton extends Button { public EmergencyButton(Context context, AttributeSet attrs) { super(context, attrs); int numPhones = MSimTelephonyManager.getDefault().getPhoneCount(); mServiceState = new ServiceState[numPhones]; } @Override Loading @@ -88,9 +100,20 @@ public class EmergencyButton extends Button { }); int phoneState = KeyguardUpdateMonitor.getInstance(mContext).getPhoneState(); State simState = KeyguardUpdateMonitor.getInstance(mContext).getSimState(); mServiceState = KeyguardUpdateMonitor.getInstance(mContext).getServiceStates(); updateEmergencyCallButton(simState, phoneState); } private boolean canMakeEmergencyCall() { for (ServiceState state : mServiceState) { if ((state != null) && (state.isEmergencyOnly() || state.getVoiceRegState() != ServiceState.STATE_OUT_OF_SERVICE)) { return true; } } return false; } /** * Shows the emergency dialer or returns the user to the existing call. */ Loading Loading @@ -128,6 +151,9 @@ public class EmergencyButton extends Button { mContext.getResources().getBoolean(R.bool.config_showEmergencyButton); } } if (mContext.getResources().getBoolean(R.bool.config_showEmergencyButton)) { enabled = enabled && canMakeEmergencyCall(); } mLockPatternUtils.updateEmergencyCallButtonState(this, phoneState, enabled, false); } Loading
packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +21 −0 Original line number Diff line number Diff line Loading @@ -100,6 +100,7 @@ public class KeyguardUpdateMonitor { private static final int MSG_SCREEN_TURNED_ON = 319; private static final int MSG_SCREEN_TURNED_OFF = 320; private static final int MSG_AIRPLANE_MODE_CHANGED = 321; private static final int MSG_SERVICE_STATE_CHANGED = 322; private static KeyguardUpdateMonitor sInstance; Loading Loading @@ -211,6 +212,9 @@ public class KeyguardUpdateMonitor { case MSG_AIRPLANE_MODE_CHANGED: handleAirplaneModeChanged((Boolean) msg.obj); break; case MSG_SERVICE_STATE_CHANGED: handleServiceStateChanged((ServiceState) msg.obj, msg.arg1); break; } } }; Loading Loading @@ -334,6 +338,10 @@ public class KeyguardUpdateMonitor { Log.d(TAG, "ACTION_SERVICE_STATE_CHANGED on sub: " + sub + " showSpn:" + mShowSpn[sub] + " showPlmn:" + mShowPlmn[sub] + " mServiceState: " + mServiceState[sub]); final Message message = mHandler.obtainMessage(MSG_SERVICE_STATE_CHANGED, mServiceState[sub]); message.arg1 = sub; mHandler.sendMessage(message); //display 2G/3G/4G if operator ask for showing radio tech if ((mServiceState[sub] != null) && (mServiceState[sub].getDataRegState() == Loading Loading @@ -955,6 +963,15 @@ public class KeyguardUpdateMonitor { } } private void handleServiceStateChanged(ServiceState state, int sub) { for (int i = 0; i < mCallbacks.size(); i++) { KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get(); if (cb != null) { cb.onServiceStateChanged(state, sub); } } } /** * Handle {@link #MSG_CLOCK_VISIBILITY_CHANGED} */ Loading Loading @@ -1151,6 +1168,10 @@ public class KeyguardUpdateMonitor { return mSimState[subscription]; } public ServiceState[] getServiceStates() { return mServiceState; } public int getPinLockedSubscription() { int sub = -1; for (int i = 0; i < mSimState.length; i++) { Loading
packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java +6 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.app.admin.DevicePolicyManager; import android.graphics.Bitmap; import android.media.AudioManager; import android.os.SystemClock; import android.telephony.ServiceState; import android.view.WindowManagerPolicy; import com.android.internal.telephony.IccCardConstants; Loading Loading @@ -197,4 +198,9 @@ class KeyguardUpdateMonitorCallback { * @param on Indicates if the airplane mode is now enable. */ void onAirplaneModeChanged(boolean on) { } /** * Called when the sevice state changes. */ void onServiceStateChanged(ServiceState state, int sub) { } }