diff options
author | Steve Kondik <steve@cyngn.com> | 2015-11-16 15:01:23 -0800 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2015-11-16 15:01:23 -0800 |
commit | 3ada4b5a85fa907989855065179c4661653cd9ad (patch) | |
tree | 6f461e770d8a22dfc0d26c8917086df4c31d5905 /packages/Keyguard/src | |
parent | 5ceb8731615dbbd54e027e09e46e724037e3a809 (diff) | |
parent | 5ccaaff4818af8d48e072cbd2b8b784e5cd0c593 (diff) | |
download | frameworks_base-3ada4b5a85fa907989855065179c4661653cd9ad.zip frameworks_base-3ada4b5a85fa907989855065179c4661653cd9ad.tar.gz frameworks_base-3ada4b5a85fa907989855065179c4661653cd9ad.tar.bz2 |
Merge branch 'LA.BF64.1.2.2_rb4.7' of git://codeaurora.org/platform/frameworks/base into cm-13.0
Change-Id: I008f052e4e27b44457c8343d20f6e1ba943c8e1f
Diffstat (limited to 'packages/Keyguard/src')
5 files changed, 106 insertions, 17 deletions
diff --git a/packages/Keyguard/src/com/android/keyguard/CarrierText.java b/packages/Keyguard/src/com/android/keyguard/CarrierText.java index f04db02..230ad42 100644 --- a/packages/Keyguard/src/com/android/keyguard/CarrierText.java +++ b/packages/Keyguard/src/com/android/keyguard/CarrierText.java @@ -28,6 +28,7 @@ import android.net.ConnectivityManager; import android.net.wifi.WifiManager; import android.telephony.ServiceState; import android.telephony.SubscriptionInfo; +import android.telephony.TelephonyManager; import android.text.TextUtils; import android.text.method.SingleLineTransformationMethod; import android.util.AttributeSet; @@ -153,15 +154,59 @@ public class CarrierText extends TextView { protected void updateCarrierText() { boolean allSimsMissing = true; boolean anySimReadyAndInService = false; + boolean showLocale = getContext().getResources().getBoolean( + com.android.internal.R.bool.config_monitor_locale_change); + boolean showRat = getContext().getResources().getBoolean( + com.android.internal.R.bool.config_display_rat); CharSequence displayText = null; List<SubscriptionInfo> subs = mKeyguardUpdateMonitor.getSubscriptionInfo(false); final int N = subs.size(); if (DEBUG) Log.d(TAG, "updateCarrierText(): " + N); for (int i = 0; i < N; i++) { + CharSequence networkClass = ""; int subId = subs.get(i).getSubscriptionId(); State simState = mKeyguardUpdateMonitor.getSimState(subId); + if (showRat) { + ServiceState ss = mKeyguardUpdateMonitor.mServiceStates.get(subId); + TelephonyManager tm = new TelephonyManager(getContext()); + if (ss != null && (ss.getDataRegState() == ServiceState.STATE_IN_SERVICE + || ss.getVoiceRegState() == ServiceState.STATE_IN_SERVICE)) { + int networkType = TelephonyManager.NETWORK_TYPE_UNKNOWN; + if (ss.getRilDataRadioTechnology() != + ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN) { + networkType = ss.getDataNetworkType(); + } else if (ss.getRilVoiceRadioTechnology() != + ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN) { + networkType = ss.getVoiceNetworkType(); + } + networkClass = tm.networkClassToString(networkType); + } + } CharSequence carrierName = subs.get(i).getCarrierName(); + if (showLocale || showRat) { + String[] names = carrierName.toString().split(mSeparator.toString(), 2); + StringBuilder newCarrierName = new StringBuilder(); + for (int j = 0; j < names.length; j++) { + if (showLocale) { + names[j] = android.util.NativeTextHelper.getLocalString(getContext(), + names[j], com.android.internal.R.array.origin_carrier_names, + com.android.internal.R.array.locale_carrier_names); + } + if (!TextUtils.isEmpty(names[j])) { + if (!TextUtils.isEmpty(networkClass) && showRat) { + names[j] = new StringBuilder().append(names[j]).append(" ") + .append(networkClass).toString(); + } + if (j > 0 && names[j].equals(names[j-1])) { + continue; + } + if (j > 0) newCarrierName.append(mSeparator); + newCarrierName.append(names[j]); + } + } + carrierName = newCarrierName.toString(); + } CharSequence carrierTextForSimState = getCarrierTextForSimState(simState, carrierName); if (DEBUG) { Log.d(TAG, "Handling (subId=" + subId + "): " + simState + " " + carrierName); diff --git a/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java b/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java index 1411aaa..e6497b5 100644 --- a/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java +++ b/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java @@ -25,6 +25,7 @@ import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserHandle; import android.telecom.TelecomManager; +import android.telephony.ServiceState; import android.util.AttributeSet; import android.view.View; import android.widget.Button; @@ -58,6 +59,11 @@ public class EmergencyButton extends Button { public void onPhoneStateChanged(int phoneState) { updateEmergencyCallButton(); } + + @Override + public void onServiceStateChanged(int sub, ServiceState state) { + updateEmergencyCallButton(); + } }; public interface EmergencyButtonCallback { @@ -153,6 +159,11 @@ public class EmergencyButton extends Button { visible = mLockPatternUtils.isSecure(KeyguardUpdateMonitor.getCurrentUser()) || SystemProperties.getBoolean("persist.radio.emgcy_btn_onswipe", false); } + + if (mContext.getResources().getBoolean(R.bool.kg_hide_emgcy_btn_when_oos)) { + KeyguardUpdateMonitor monitor = KeyguardUpdateMonitor.getInstance(mContext); + visible = visible && !monitor.isOOS(); + } } } if (visible) { diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardSimPinView.java b/packages/Keyguard/src/com/android/keyguard/KeyguardSimPinView.java index 7214d40..1d10b57 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardSimPinView.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardSimPinView.java @@ -60,12 +60,7 @@ public class KeyguardSimPinView extends KeyguardPinBasedInputView { @Override public void onSimStateChanged(int subId, int slotId, State simState) { if (DEBUG) Log.v(TAG, "onSimStateChanged(subId=" + subId + ",state=" + simState + ")"); - switch (simState) { - case NOT_READY: - case ABSENT: - closeKeyGuard(); - break; - } + resetState(); }; }; @@ -262,7 +257,12 @@ public class KeyguardSimPinView extends KeyguardPinBasedInputView { } resetPasswordText(true /* animate */); if (result == PhoneConstants.PIN_RESULT_SUCCESS) { - closeKeyGuard(); + KeyguardUpdateMonitor.getInstance(getContext()) + .reportSimUnlocked(mSubId); + mRemainingAttempts = -1; + if (mCallback != null) { + mCallback.dismiss(true); + } } else { mShowDefaultMessage = false; if (result == PhoneConstants.PIN_PASSWORD_INCORRECT) { @@ -305,16 +305,6 @@ public class KeyguardSimPinView extends KeyguardPinBasedInputView { return false; } - private void closeKeyGuard() { - if (DEBUG) Log.d(TAG, "closeKeyGuard: Verification Completed, closing Keyguard."); - mRemainingAttempts = -1; - KeyguardUpdateMonitor.getInstance(getContext()) - .reportSimUnlocked(mSubId); - mCallback.dismiss(true); - mShowDefaultMessage = true; - reset(); - } - private void showDefaultMessage() { KeyguardUpdateMonitor monitor = KeyguardUpdateMonitor.getInstance(mContext); mSubId = monitor.getNextSubIdForState(IccCardConstants.State.PIN_REQUIRED); diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java index 5e09729..e9d35f1 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -136,6 +136,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { private static final int MSG_SERVICE_STATE_CHANGE = 330; private static final int MSG_SCREEN_TURNED_ON = 331; private static final int MSG_SCREEN_TURNED_OFF = 332; + private static final int MSG_LOCALE_CHANGED = 500; /** Fingerprint state: Not listening to fingerprint. */ private static final int FINGERPRINT_STATE_STOPPED = 0; @@ -274,6 +275,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { case MSG_SCREEN_TURNED_OFF: handleScreenTurnedOff(); break; + case MSG_LOCALE_CHANGED: + handleLocaleChanged(); + break; } } }; @@ -650,6 +654,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } mHandler.sendMessage( mHandler.obtainMessage(MSG_SERVICE_STATE_CHANGE, subId, 0, serviceState)); + } else if (Intent.ACTION_LOCALE_CHANGED.equals(action)) { + mHandler.sendEmptyMessage(MSG_LOCALE_CHANGED); } } }; @@ -978,6 +984,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { filter.addAction(Intent.ACTION_BATTERY_CHANGED); filter.addAction(Intent.ACTION_TIMEZONE_CHANGED); filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED); + filter.addAction(Intent.ACTION_LOCALE_CHANGED); filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED); filter.addAction(TelephonyIntents.ACTION_SERVICE_STATE_CHANGED); filter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED); @@ -1318,6 +1325,18 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } /** + * Handle {@link #MSG_LOCALE_CHANGED} + */ + private void handleLocaleChanged() { + for (int j = 0; j < mCallbacks.size(); j++) { + KeyguardUpdateMonitorCallback cb = mCallbacks.get(j).get(); + if (cb != null) { + cb.onRefreshCarrierInfo(); + } + } + } + + /** * Handle {@link #MSG_SERVICE_STATE_CHANGE} */ private void handleServiceStateChange(int subId, ServiceState serviceState) { @@ -1337,6 +1356,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { KeyguardUpdateMonitorCallback cb = mCallbacks.get(j).get(); if (cb != null) { cb.onRefreshCarrierInfo(); + cb.onServiceStateChanged(subId, serviceState); } } } @@ -1565,6 +1585,21 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { } } + public boolean isOOS() + { + boolean ret = true; + for (int subId : mServiceStates.keySet()) { + ServiceState state = mServiceStates.get(subId); + if (((state.getVoiceRegState() != ServiceState.STATE_OUT_OF_SERVICE) + && (state.getVoiceRegState() != ServiceState.STATE_POWER_OFF)) + || (state.isEmergencyOnly())) { + ret = false; + break; + } + } + return ret; + } + /** * @return true if and only if the state has changed for the specified {@code slotId} */ diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java index bd6c51c..c797732 100644 --- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java +++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java @@ -20,6 +20,7 @@ import android.graphics.Bitmap; import android.media.AudioManager; import android.os.SystemClock; import android.hardware.fingerprint.FingerprintManager; +import android.telephony.ServiceState; import android.telephony.TelephonyManager; import android.view.WindowManagerPolicy; @@ -123,6 +124,13 @@ public class KeyguardUpdateMonitorCallback { public void onSimStateChanged(int subId, int slotId, IccCardConstants.State simState) { } /** + * Called when the sevice state changes. + * @param subId + * @param serviceState + */ + public void onServiceStateChanged(int sub, ServiceState state) { } + + /** * Called when the user's info changed. */ public void onUserInfoChanged(int userId) { } |