Merge "Change use of default sub to default data sub in GnssLocationProvider" into qt-dev
This commit is contained in:
@@ -317,8 +317,10 @@ class GnssConfiguration {
|
||||
if (configManager == null) {
|
||||
return;
|
||||
}
|
||||
PersistableBundle configs = configManager.getConfigForSubId(
|
||||
SubscriptionManager.getDefaultDataSubscriptionId());
|
||||
|
||||
int ddSubId = SubscriptionManager.getDefaultDataSubscriptionId();
|
||||
PersistableBundle configs = SubscriptionManager.isValidSubscriptionId(ddSubId)
|
||||
? configManager.getConfigForSubId(ddSubId) : null;
|
||||
if (configs == null) {
|
||||
if (DEBUG) Log.d(TAG, "SIM not ready, use default carrier config.");
|
||||
configs = CarrierConfigManager.getDefaultConfig();
|
||||
|
||||
@@ -60,7 +60,6 @@ import android.os.WorkSource.WorkChain;
|
||||
import android.provider.Settings;
|
||||
import android.telephony.CarrierConfigManager;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.telephony.gsm.GsmCellLocation;
|
||||
import android.text.TextUtils;
|
||||
@@ -75,6 +74,7 @@ import com.android.internal.location.GpsNetInitiatedHandler.GpsNiNotification;
|
||||
import com.android.internal.location.ProviderProperties;
|
||||
import com.android.internal.location.ProviderRequest;
|
||||
import com.android.internal.location.gnssmetrics.GnssMetrics;
|
||||
import com.android.internal.telephony.TelephonyIntents;
|
||||
import com.android.server.location.GnssSatelliteBlacklistHelper.GnssSatelliteBlacklistCallback;
|
||||
import com.android.server.location.NtpTimeHelper.InjectNtpTimeCallback;
|
||||
|
||||
@@ -184,7 +184,6 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
|
||||
private static final int DOWNLOAD_PSDS_DATA = 6;
|
||||
private static final int UPDATE_LOCATION = 7; // Handle external location from network listener
|
||||
private static final int DOWNLOAD_PSDS_DATA_FINISHED = 11;
|
||||
private static final int SUBSCRIPTION_OR_CARRIER_CONFIG_CHANGED = 12;
|
||||
private static final int INITIALIZE_HANDLER = 13;
|
||||
private static final int REQUEST_LOCATION = 16;
|
||||
private static final int REPORT_LOCATION = 17; // HAL reports location
|
||||
@@ -484,22 +483,13 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
|
||||
updateLowPowerMode();
|
||||
break;
|
||||
case CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED:
|
||||
case TelephonyIntents.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED:
|
||||
subscriptionOrCarrierConfigChanged(context);
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// TODO: replace OnSubscriptionsChangedListener with ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED
|
||||
// broadcast receiver.
|
||||
private final OnSubscriptionsChangedListener mOnSubscriptionsChangedListener =
|
||||
new OnSubscriptionsChangedListener() {
|
||||
@Override
|
||||
public void onSubscriptionsChanged() {
|
||||
sendMessage(SUBSCRIPTION_OR_CARRIER_CONFIG_CHANGED, 0, null);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Implements {@link GnssSatelliteBlacklistCallback#onUpdateSatelliteBlacklist}.
|
||||
*/
|
||||
@@ -515,12 +505,15 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
|
||||
mContext.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
CarrierConfigManager configManager = (CarrierConfigManager)
|
||||
mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE);
|
||||
String mccMnc = phone.getSimOperator();
|
||||
int ddSubId = SubscriptionManager.getDefaultDataSubscriptionId();
|
||||
String mccMnc = SubscriptionManager.isValidSubscriptionId(ddSubId)
|
||||
? phone.getSimOperator(ddSubId) : phone.getSimOperator();
|
||||
boolean isKeepLppProfile = false;
|
||||
if (!TextUtils.isEmpty(mccMnc)) {
|
||||
if (DEBUG) Log.d(TAG, "SIM MCC/MNC is available: " + mccMnc);
|
||||
if (configManager != null) {
|
||||
PersistableBundle b = configManager.getConfig();
|
||||
PersistableBundle b = SubscriptionManager.isValidSubscriptionId(ddSubId)
|
||||
? configManager.getConfigForSubId(ddSubId) : null;
|
||||
if (b != null) {
|
||||
isKeepLppProfile =
|
||||
b.getBoolean(CarrierConfigManager.Gps.KEY_PERSIST_LPP_MODE_BOOL);
|
||||
@@ -539,7 +532,6 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
|
||||
SystemProperties.set(GnssConfiguration.LPP_PROFILE, "");
|
||||
}
|
||||
reloadGpsProperties();
|
||||
mNIHandler.setSuplEsEnabled(mSuplEsEnabled);
|
||||
} else {
|
||||
if (DEBUG) Log.d(TAG, "SIM MCC/MNC is still not available");
|
||||
}
|
||||
@@ -577,9 +569,9 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
|
||||
mC2KServerPort = mGnssConfiguration.getC2KPort(TCP_MIN_PORT);
|
||||
mNIHandler.setEmergencyExtensionSeconds(mGnssConfiguration.getEsExtensionSec());
|
||||
mSuplEsEnabled = mGnssConfiguration.getSuplEs(0) == 1;
|
||||
mNIHandler.setSuplEsEnabled(mSuplEsEnabled);
|
||||
if (mGnssVisibilityControl != null) {
|
||||
mGnssVisibilityControl.updateProxyApps(mGnssConfiguration.getProxyApps());
|
||||
mGnssVisibilityControl.setEsNotify(mGnssConfiguration.getEsNotify(0));
|
||||
mGnssVisibilityControl.onConfigurationUpdated(mGnssConfiguration);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1892,28 +1884,34 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
|
||||
TelephonyManager phone = (TelephonyManager)
|
||||
mContext.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
int type = AGPS_SETID_TYPE_NONE;
|
||||
String data = "";
|
||||
String setId = null;
|
||||
|
||||
int ddSubId = SubscriptionManager.getDefaultDataSubscriptionId();
|
||||
if ((flags & AGPS_RIL_REQUEST_SETID_IMSI) == AGPS_RIL_REQUEST_SETID_IMSI) {
|
||||
String data_temp = phone.getSubscriberId();
|
||||
if (data_temp == null) {
|
||||
// This means the framework does not have the SIM card ready.
|
||||
} else {
|
||||
if (SubscriptionManager.isValidSubscriptionId(ddSubId)) {
|
||||
setId = phone.getSubscriberId(ddSubId);
|
||||
}
|
||||
if (setId == null) {
|
||||
setId = phone.getSubscriberId();
|
||||
}
|
||||
if (setId != null) {
|
||||
// This means the framework has the SIM card.
|
||||
data = data_temp;
|
||||
type = AGPS_SETID_TYPE_IMSI;
|
||||
}
|
||||
} else if ((flags & AGPS_RIL_REQUEST_SETID_MSISDN) == AGPS_RIL_REQUEST_SETID_MSISDN) {
|
||||
String data_temp = phone.getLine1Number();
|
||||
if (data_temp == null) {
|
||||
// This means the framework does not have the SIM card ready.
|
||||
} else {
|
||||
if (SubscriptionManager.isValidSubscriptionId(ddSubId)) {
|
||||
setId = phone.getLine1Number(ddSubId);
|
||||
}
|
||||
if (setId == null) {
|
||||
setId = phone.getLine1Number();
|
||||
}
|
||||
if (setId != null) {
|
||||
// This means the framework has the SIM card.
|
||||
data = data_temp;
|
||||
type = AGPS_SETID_TYPE_MSISDN;
|
||||
}
|
||||
}
|
||||
native_agps_set_id(type, data);
|
||||
|
||||
native_agps_set_id(type, (setId == null) ? "" : setId);
|
||||
}
|
||||
|
||||
@NativeEntryPoint
|
||||
@@ -2025,9 +2023,6 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
|
||||
case UPDATE_LOCATION:
|
||||
handleUpdateLocation((Location) msg.obj);
|
||||
break;
|
||||
case SUBSCRIPTION_OR_CARRIER_CONFIG_CHANGED:
|
||||
subscriptionOrCarrierConfigChanged(mContext);
|
||||
break;
|
||||
case INITIALIZE_HANDLER:
|
||||
handleInitialize();
|
||||
break;
|
||||
@@ -2066,17 +2061,6 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
|
||||
// (this configuration might change in the future based on SIM changes)
|
||||
reloadGpsProperties();
|
||||
|
||||
// TODO: When this object "finishes" we should unregister by invoking
|
||||
// SubscriptionManager.getInstance(mContext).unregister
|
||||
// (mOnSubscriptionsChangedListener);
|
||||
// This is not strictly necessary because it will be unregistered if the
|
||||
// notification fails but it is good form.
|
||||
|
||||
// Register for SubscriptionInfo list changes which is guaranteed
|
||||
// to invoke onSubscriptionsChanged the first time.
|
||||
SubscriptionManager.from(mContext)
|
||||
.addOnSubscriptionsChangedListener(mOnSubscriptionsChangedListener);
|
||||
|
||||
// listen for events
|
||||
IntentFilter intentFilter = new IntentFilter();
|
||||
intentFilter.addAction(ALARM_WAKEUP);
|
||||
@@ -2086,6 +2070,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
|
||||
intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
|
||||
intentFilter.addAction(Intent.ACTION_SCREEN_ON);
|
||||
intentFilter.addAction(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
|
||||
intentFilter.addAction(TelephonyIntents.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED);
|
||||
mContext.registerReceiver(mBroadcastReceiver, intentFilter, null, this);
|
||||
|
||||
mNetworkConnectivityHandler.registerNetworkCallbacks();
|
||||
@@ -2164,8 +2149,6 @@ public class GnssLocationProvider extends AbstractLocationProvider implements
|
||||
return "DOWNLOAD_PSDS_DATA_FINISHED";
|
||||
case UPDATE_LOCATION:
|
||||
return "UPDATE_LOCATION";
|
||||
case SUBSCRIPTION_OR_CARRIER_CONFIG_CHANGED:
|
||||
return "SUBSCRIPTION_OR_CARRIER_CONFIG_CHANGED";
|
||||
case INITIALIZE_HANDLER:
|
||||
return "INITIALIZE_HANDLER";
|
||||
case REPORT_LOCATION:
|
||||
|
||||
@@ -76,7 +76,7 @@ class GnssVisibilityControl {
|
||||
private final GpsNetInitiatedHandler mNiHandler;
|
||||
|
||||
private boolean mIsGpsEnabled;
|
||||
private volatile boolean mEsNotify;
|
||||
private boolean mEsNotify;
|
||||
|
||||
// Number of non-framework location access proxy apps is expected to be small (< 5).
|
||||
private static final int ARRAY_MAP_INITIAL_CAPACITY_PROXY_APP_TO_LOCATION_PERMISSIONS = 7;
|
||||
@@ -124,10 +124,6 @@ class GnssVisibilityControl {
|
||||
}
|
||||
}
|
||||
|
||||
void updateProxyApps(List<String> nfwLocationAccessProxyApps) {
|
||||
runOnHandler(() -> handleUpdateProxyApps(nfwLocationAccessProxyApps));
|
||||
}
|
||||
|
||||
void reportNfwNotification(String proxyAppPackageName, byte protocolStack,
|
||||
String otherProtocolStackName, byte requestor, String requestorId, byte responseType,
|
||||
boolean inEmergencyMode, boolean isCachedLocation) {
|
||||
@@ -136,15 +132,25 @@ class GnssVisibilityControl {
|
||||
requestor, requestorId, responseType, inEmergencyMode, isCachedLocation)));
|
||||
}
|
||||
|
||||
void setEsNotify(int esNotifyConfig) {
|
||||
if (esNotifyConfig != ES_NOTIFY_NONE && esNotifyConfig != ES_NOTIFY_ALL) {
|
||||
void onConfigurationUpdated(GnssConfiguration configuration) {
|
||||
// The configuration object must be accessed only in the caller thread and not in mHandler.
|
||||
List<String> nfwLocationAccessProxyApps = configuration.getProxyApps();
|
||||
int esNotify = configuration.getEsNotify(ES_NOTIFY_NONE);
|
||||
runOnHandler(() -> {
|
||||
setEsNotify(esNotify);
|
||||
handleUpdateProxyApps(nfwLocationAccessProxyApps);
|
||||
});
|
||||
}
|
||||
|
||||
private void setEsNotify(int esNotify) {
|
||||
if (esNotify != ES_NOTIFY_NONE && esNotify != ES_NOTIFY_ALL) {
|
||||
Log.e(TAG, "Config parameter " + GnssConfiguration.CONFIG_ES_NOTIFY_INT
|
||||
+ " is set to invalid value: " + esNotifyConfig
|
||||
+ " is set to invalid value: " + esNotify
|
||||
+ ". Using default value: " + ES_NOTIFY_NONE);
|
||||
esNotifyConfig = ES_NOTIFY_NONE;
|
||||
esNotify = ES_NOTIFY_NONE;
|
||||
}
|
||||
|
||||
mEsNotify = (esNotifyConfig == ES_NOTIFY_ALL);
|
||||
mEsNotify = (esNotify == ES_NOTIFY_ALL);
|
||||
}
|
||||
|
||||
private void handleInitialize() {
|
||||
|
||||
Reference in New Issue
Block a user