summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--services/java/com/android/server/status/StatusBarPolicy.java5
-rw-r--r--telephony/java/android/telephony/ServiceState.java33
-rw-r--r--telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java20
3 files changed, 40 insertions, 18 deletions
diff --git a/services/java/com/android/server/status/StatusBarPolicy.java b/services/java/com/android/server/status/StatusBarPolicy.java
index 55840e2..465ff2e 100644
--- a/services/java/com/android/server/status/StatusBarPolicy.java
+++ b/services/java/com/android/server/status/StatusBarPolicy.java
@@ -818,7 +818,7 @@ public class StatusBarPolicy {
final ContentResolver cr = mContext.getContentResolver();
if (Settings.System.getInt(cr,
- Settings.System.POWER_SOUNDS_ENABLED, 1) == 1)
+ Settings.System.POWER_SOUNDS_ENABLED, 1) == 1)
{
final String soundPath = Settings.System.getString(cr,
Settings.System.LOW_BATTERY_SOUND);
@@ -972,7 +972,8 @@ public class StatusBarPolicy {
int iconLevel = -1;
int[] iconList;
- if (!hasService()) {
+ // Display signal strength while in "emergency calls only" mode
+ if (!hasService() && !mServiceState.isEmergencyOnly()) {
//Slog.d(TAG, "updateSignalStrength: no service");
if (Settings.System.getInt(mContext.getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, 0) == 1) {
diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java
index 48a40fa..6c66559 100644
--- a/telephony/java/android/telephony/ServiceState.java
+++ b/telephony/java/android/telephony/ServiceState.java
@@ -113,6 +113,8 @@ public class ServiceState implements Parcelable {
private String mOperatorNumeric;
private boolean mIsManualNetworkSelection;
+ private boolean mIsEmergencyOnly;
+
//***** CDMA
private int mRadioTechnology;
private boolean mCssIndicator;
@@ -170,6 +172,7 @@ public class ServiceState implements Parcelable {
mCdmaDefaultRoamingIndicator = s.mCdmaDefaultRoamingIndicator;
mCdmaEriIconIndex = s.mCdmaEriIconIndex;
mCdmaEriIconMode = s.mCdmaEriIconMode;
+ mIsEmergencyOnly = s.mIsEmergencyOnly;
}
/**
@@ -190,6 +193,7 @@ public class ServiceState implements Parcelable {
mCdmaDefaultRoamingIndicator = in.readInt();
mCdmaEriIconIndex = in.readInt();
mCdmaEriIconMode = in.readInt();
+ mIsEmergencyOnly = in.readInt() != 0;
}
public void writeToParcel(Parcel out, int flags) {
@@ -207,6 +211,7 @@ public class ServiceState implements Parcelable {
out.writeInt(mCdmaDefaultRoamingIndicator);
out.writeInt(mCdmaEriIconIndex);
out.writeInt(mCdmaEriIconMode);
+ out.writeInt(mIsEmergencyOnly ? 1 : 0);
}
public int describeContents() {
@@ -250,6 +255,13 @@ public class ServiceState implements Parcelable {
/**
* @hide
*/
+ public boolean isEmergencyOnly() {
+ return mIsEmergencyOnly;
+ }
+
+ /**
+ * @hide
+ */
public int getCdmaRoamingIndicator(){
return this.mCdmaRoamingIndicator;
}
@@ -330,7 +342,8 @@ public class ServiceState implements Parcelable {
+ ((null == mOperatorAlphaShort) ? 0 : mOperatorAlphaShort.hashCode())
+ ((null == mOperatorNumeric) ? 0 : mOperatorNumeric.hashCode())
+ mCdmaRoamingIndicator
- + mCdmaDefaultRoamingIndicator);
+ + mCdmaDefaultRoamingIndicator
+ + (mIsEmergencyOnly ? 1 : 0));
}
@Override
@@ -359,7 +372,8 @@ public class ServiceState implements Parcelable {
&& equalsHandlesNulls(mSystemId, s.mSystemId)
&& equalsHandlesNulls(mCdmaRoamingIndicator, s.mCdmaRoamingIndicator)
&& equalsHandlesNulls(mCdmaDefaultRoamingIndicator,
- s.mCdmaDefaultRoamingIndicator));
+ s.mCdmaDefaultRoamingIndicator)
+ && mIsEmergencyOnly == s.mIsEmergencyOnly);
}
@Override
@@ -418,7 +432,8 @@ public class ServiceState implements Parcelable {
+ " " + mNetworkId
+ " " + mSystemId
+ "RoamInd: " + mCdmaRoamingIndicator
- + "DefRoamInd: " + mCdmaDefaultRoamingIndicator);
+ + "DefRoamInd: " + mCdmaDefaultRoamingIndicator
+ + "EmergOnly: " + mIsEmergencyOnly);
}
public void setStateOutOfService() {
@@ -436,6 +451,7 @@ public class ServiceState implements Parcelable {
mCdmaDefaultRoamingIndicator = -1;
mCdmaEriIconIndex = -1;
mCdmaEriIconMode = -1;
+ mIsEmergencyOnly = false;
}
// TODO - can't this be combined with the above func..
@@ -454,6 +470,7 @@ public class ServiceState implements Parcelable {
mCdmaDefaultRoamingIndicator = -1;
mCdmaEriIconIndex = -1;
mCdmaEriIconMode = -1;
+ mIsEmergencyOnly = false;
}
public void setState(int state) {
@@ -464,6 +481,14 @@ public class ServiceState implements Parcelable {
mRoaming = roaming;
}
+
+ /**
+ * @hide
+ */
+ public void setEmergencyOnly(boolean emergencyOnly) {
+ mIsEmergencyOnly = emergencyOnly;
+ }
+
/**
* @hide
*/
@@ -542,6 +567,7 @@ public class ServiceState implements Parcelable {
mSystemId = m.getInt("systemId");
mCdmaRoamingIndicator = m.getInt("cdmaRoamingIndicator");
mCdmaDefaultRoamingIndicator = m.getInt("cdmaDefaultRoamingIndicator");
+ mIsEmergencyOnly = m.getBoolean("emergencyOnly");
}
/**
@@ -563,6 +589,7 @@ public class ServiceState implements Parcelable {
m.putInt("systemId", mSystemId);
m.putInt("cdmaRoamingIndicator", mCdmaRoamingIndicator);
m.putInt("cdmaDefaultRoamingIndicator", mCdmaDefaultRoamingIndicator);
+ m.putBoolean("emergencyOnly", Boolean.valueOf(mIsEmergencyOnly));
}
//***** CDMA
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
index e4fcf6c..50b8eba 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java
@@ -102,7 +102,6 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
* Mark when service state is in emergency call only mode
*/
private boolean mEmergencyOnly = false;
- private boolean mNewEmergencyOnly = false;
private RegistrantList gprsAttachedRegistrants = new RegistrantList();
private RegistrantList gprsDetachedRegistrants = new RegistrantList();
@@ -591,8 +590,8 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
if (rule != curSpnRule
|| !TextUtils.equals(spn, curSpn)
|| !TextUtils.equals(plmn, curPlmn)) {
- boolean showSpn = mEmergencyOnly
- || (rule & SIMRecords.SPN_RULE_SHOW_SPN) == SIMRecords.SPN_RULE_SHOW_SPN;
+ boolean showSpn = !mEmergencyOnly
+ && (rule & SIMRecords.SPN_RULE_SHOW_SPN) == SIMRecords.SPN_RULE_SHOW_SPN;
boolean showPlmn =
(rule & SIMRecords.SPN_RULE_SHOW_PLMN) == SIMRecords.SPN_RULE_SHOW_PLMN;
@@ -672,9 +671,9 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
newSS.setState (regCodeToServiceState(regState));
if (regState == 10 || regState == 12 || regState == 13 || regState == 14) {
- mNewEmergencyOnly = true;
+ mEmergencyOnly = true;
} else {
- mNewEmergencyOnly = false;
+ mEmergencyOnly = false;
}
// LAC and CID are -1 if not avail
@@ -741,6 +740,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
roaming = false;
}
newSS.setRoaming(roaming);
+ newSS.setEmergencyOnly(mEmergencyOnly);
pollStateDone();
}
}
@@ -886,8 +886,6 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
boolean hasLocationChanged = !newCellLoc.equals(cellLoc);
- boolean hasEmergencyOnlyChanged = mNewEmergencyOnly != mEmergencyOnly;
-
// Add an event log when connection state changes
if (ss.getState() != newSS.getState() || gprsState != newGPRSState) {
EventLog.writeEvent(EventLogTags.GSM_SERVICE_STATE_CHANGE,
@@ -905,8 +903,6 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
cellLoc = newCellLoc;
newCellLoc = tcl;
- mEmergencyOnly = mNewEmergencyOnly;
-
// Add an event log when network type switched
// TODO: we may add filtering to reduce the event logged,
// i.e. check preferred network setting, only switch to 2G, etc
@@ -937,6 +933,8 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
if (hasChanged) {
String operatorNumeric;
+ updateSpnDisplay();
+
phone.setSystemProperty(TelephonyProperties.PROPERTY_OPERATOR_ALPHA,
ss.getOperatorAlphaLong());
@@ -1005,10 +1003,6 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
phone.notifyServiceStateChanged(ss);
}
- if (hasChanged || hasEmergencyOnlyChanged) {
- updateSpnDisplay();
- }
-
if (hasGprsAttached) {
gprsAttachedRegistrants.notifyRegistrants();
}