summaryrefslogtreecommitdiffstats
path: root/packages/Keyguard/src
diff options
context:
space:
mode:
authorSteve Kondik <steve@cyngn.com>2015-11-16 15:01:23 -0800
committerSteve Kondik <steve@cyngn.com>2015-11-16 15:01:23 -0800
commit3ada4b5a85fa907989855065179c4661653cd9ad (patch)
tree6f461e770d8a22dfc0d26c8917086df4c31d5905 /packages/Keyguard/src
parent5ceb8731615dbbd54e027e09e46e724037e3a809 (diff)
parent5ccaaff4818af8d48e072cbd2b8b784e5cd0c593 (diff)
downloadframeworks_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')
-rw-r--r--packages/Keyguard/src/com/android/keyguard/CarrierText.java45
-rw-r--r--packages/Keyguard/src/com/android/keyguard/EmergencyButton.java11
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardSimPinView.java24
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java35
-rw-r--r--packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java8
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) { }