Merge "Add requestSessionStats API." into 24D1-dev
diff --git a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteCommunicationAllowedStateCallbackWrapper.java b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteCommunicationAllowedStateCallbackWrapper.java
new file mode 100644
index 0000000..85fb42f
--- /dev/null
+++ b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteCommunicationAllowedStateCallbackWrapper.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.satellite.wrapper;
+
+/** A callback class for monitoring satellite communication allowed state change events. */
+public interface SatelliteCommunicationAllowedStateCallbackWrapper {
+ /**
+ * Telephony does not guarantee that whenever there is a change in communication allowed state,
+ * this API will be called. Telephony does its best to detect the changes and notify its
+ * listeners accordingly.
+ *
+ * @param isAllowed {@code true} means satellite allow state is changed,
+ * {@code false} satellite allow state is not changed
+ */
+ void onSatelliteCommunicationAllowedStateChanged(boolean isAllowed);
+}
diff --git a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
index 76b7c73..59045f6 100644
--- a/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
+++ b/satellite_client/src/android/telephony/satellite/wrapper/SatelliteManagerWrapper.java
@@ -41,6 +41,7 @@
import android.telephony.satellite.PointingInfo;
import android.telephony.satellite.SatelliteCapabilities;
import android.telephony.satellite.SatelliteCapabilitiesCallback;
+import android.telephony.satellite.SatelliteCommunicationAllowedStateCallback;
import android.telephony.satellite.SatelliteDatagram;
import android.telephony.satellite.SatelliteDatagramCallback;
import android.telephony.satellite.SatelliteManager;
@@ -105,6 +106,10 @@
CarrierRoamingNtnModeListenerWrapper, TelephonyCallback.CarrierRoamingNtnModeListener>
sCarrierRoamingNtnModeListenerWrapperMap = new ConcurrentHashMap<>();
+ private static final ConcurrentHashMap<SatelliteCommunicationAllowedStateCallbackWrapper,
+ SatelliteCommunicationAllowedStateCallback>
+ sSatelliteCommunicationAllowedStateCallbackWrapperMap = new ConcurrentHashMap<>();
+
private final SatelliteManager mSatelliteManager;
private final SubscriptionManager mSubscriptionManager;
private final TelephonyManager mTelephonyManager;
@@ -1332,6 +1337,37 @@
}
}
+ /** Registers for the satellite communication allowed state changed. */
+ @SatelliteResult
+ public int registerForCommunicationAllowedStateChanged(
+ @NonNull @CallbackExecutor Executor executor,
+ @NonNull SatelliteCommunicationAllowedStateCallbackWrapper callback) {
+ SatelliteCommunicationAllowedStateCallback internalCallback =
+ new SatelliteCommunicationAllowedStateCallback() {
+ @Override
+ public void onSatelliteCommunicationAllowedStateChanged(boolean supported) {
+ callback.onSatelliteCommunicationAllowedStateChanged(supported);
+ }
+ };
+ sSatelliteCommunicationAllowedStateCallbackWrapperMap.put(callback, internalCallback);
+ int result = mSatelliteManager.registerForCommunicationAllowedStateChanged(executor,
+ internalCallback);
+ return result;
+ }
+
+ /**
+ * Unregisters for the satellite communication allowed state changed. If callback was not
+ * registered before, the request will be ignored.
+ */
+ public void unregisterForCommunicationAllowedStateChanged(
+ @NonNull SatelliteCommunicationAllowedStateCallbackWrapper callback) {
+ SatelliteCommunicationAllowedStateCallback internalCallback =
+ sSatelliteCommunicationAllowedStateCallbackWrapperMap.get(callback);
+ if (internalCallback != null) {
+ mSatelliteManager.unregisterForCommunicationAllowedStateChanged(internalCallback);
+ }
+ }
+
@Nullable
private ServiceState getServiceStateForSubscriptionId(int subId) {
if (!mSubscriptionManager.isValidSubscriptionId(subId)) {