Merge "Test SatelliteModemdStateCallback" into main
diff --git a/res/layout/radio_info.xml b/res/layout/radio_info.xml
index 2c41c62..f19aada 100644
--- a/res/layout/radio_info.xml
+++ b/res/layout/radio_info.xml
@@ -275,6 +275,15 @@
android:text="@string/esos_satellite_string"
/>
+ <!-- Satellite enable non-emergency mode-->
+ <Button android:id="@+id/satellite_enable_non_emergency_mode"
+ android:textSize="14sp"
+ android:layout_marginTop="8dip"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAllCaps="false"
+ android:text="@string/satellite_enable_non_emergency_mode_string" />
+
<!-- VoLTE provisioned -->
<Switch android:id="@+id/volte_provisioned_switch"
android:textSize="14sp"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f5e55ba..305f7cb 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2035,6 +2035,8 @@
<string name="mock_carrier_roaming_satellite_string">Mock Carrier Satellite Mode (Debug Build only)</string>
<!-- Title for trigger real satellite eSOS. -->
<string name="esos_satellite_string">Test real satellite eSOS mode (Debug Build only)</string>
+ <!-- Title for enable real satellite non-emergency mode. -->
+ <string name="satellite_enable_non_emergency_mode_string">Test real satellite non-eSOS mode (Debug Build only)</string>
<!-- Phone Info screen. Menu item label. Used for diagnostic info screens, precise translation isn't needed -->
<string name="radioInfo_menu_viewADN">View SIM Address Book</string>
diff --git a/src/com/android/phone/settings/RadioInfo.java b/src/com/android/phone/settings/RadioInfo.java
index 14d89e4..e234381 100644
--- a/src/com/android/phone/settings/RadioInfo.java
+++ b/src/com/android/phone/settings/RadioInfo.java
@@ -84,6 +84,8 @@
import android.telephony.ims.ProvisioningManager;
import android.telephony.ims.feature.MmTelFeature;
import android.telephony.ims.stub.ImsRegistrationImplBase;
+import android.telephony.satellite.EnableRequestAttributes;
+import android.telephony.satellite.SatelliteManager;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
@@ -314,6 +316,7 @@
private Button mCarrierProvisioningButton;
private Button mTriggerCarrierProvisioningButton;
private Button mEsosButton;
+ private Button mSatelliteEnableNonEmergencyModeButton;
private Switch mImsVolteProvisionedSwitch;
private Switch mImsVtProvisionedSwitch;
private Switch mImsWfcProvisionedSwitch;
@@ -749,14 +752,19 @@
}
mEsosButton = (Button) findViewById(R.id.esos_questionnaire);
+ mSatelliteEnableNonEmergencyModeButton = (Button) findViewById(
+ R.id.satellite_enable_non_emergency_mode);
if (!TelephonyUtils.IS_DEBUGGABLE) {
mEsosButton.setVisibility(View.GONE);
+ mSatelliteEnableNonEmergencyModeButton.setVisibility(View.GONE);
} else {
mEsosButton.setOnClickListener(v ->
mPhone.getContext().startActivity(
new Intent(ACTION_ESOS_TEST)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK))
);
+ mSatelliteEnableNonEmergencyModeButton.setOnClickListener(v ->
+ enableSatelliteNonEmergencyMode());
}
mOemInfoButton = (Button) findViewById(R.id.oem_info);
@@ -2024,6 +2032,29 @@
}
};
+ /**
+ * Enable modem satellite for non-emergency mode.
+ */
+ private void enableSatelliteNonEmergencyMode() {
+ SatelliteManager sm = mPhone.getContext().getSystemService(SatelliteManager.class);
+ CarrierConfigManager cm = mPhone.getContext().getSystemService(CarrierConfigManager.class);
+ if (sm == null || cm == null) {
+ loge("enableSatelliteNonEmergencyMode: sm or cm is null");
+ return;
+ }
+ if (cm.getConfigForSubId(mPhone.getSubId(),
+ CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL)
+ .getBoolean(CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL)) {
+ loge("enableSatelliteNonEmergencyMode: KEY_SATELLITE_ATTACH_SUPPORTED_BOOL is false");
+ return;
+ }
+ log("enableSatelliteNonEmergencyMode: requestEnabled");
+ sm.requestEnabled(new EnableRequestAttributes.Builder(true)
+ .setDemoMode(false).setEmergencyMode(false).build(),
+ Runnable::run, res -> log("enableSatelliteNonEmergencyMode: " + res)
+ );
+ }
+
private boolean isImsVolteProvisioned() {
return getImsConfigProvisionedState(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
ImsRegistrationImplBase.REGISTRATION_TECH_LTE);