Loading telephony/java/android/telephony/TelephonyManager.java +77 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,8 @@ import android.telephony.emergency.EmergencyNumber; import android.telephony.emergency.EmergencyNumber.EmergencyServiceCategories; import android.telephony.ims.ImsMmTelManager; import android.telephony.ims.aidl.IImsConfig; import android.telephony.ims.aidl.IImsMmTelFeature; import android.telephony.ims.aidl.IImsRcsFeature; import android.telephony.ims.aidl.IImsRegistration; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; Loading @@ -92,6 +94,7 @@ import android.text.TextUtils; import android.util.Log; import android.util.Pair; import com.android.ims.internal.IImsServiceFeatureCallback; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.CellNetworkScanResult; Loading Loading @@ -7305,6 +7308,80 @@ public class TelephonyManager { } } /** * Returns the {@link IImsMmTelFeature} that corresponds to the given slot Id and MMTel * feature or {@link null} if the service is not available. If an MMTelFeature is available, the * {@link IImsServiceFeatureCallback} callback is registered as a listener for feature updates. * @param slotIndex The SIM slot that we are requesting the {@link IImsMmTelFeature} for. * @param callback Listener that will send updates to ImsManager when there are updates to * ImsServiceController. * @return {@link IImsMmTelFeature} interface for the feature specified or {@code null} if * it is unavailable. * @hide */ public @Nullable IImsMmTelFeature getImsMmTelFeatureAndListen(int slotIndex, IImsServiceFeatureCallback callback) { try { ITelephony telephony = getITelephony(); if (telephony != null) { return telephony.getMmTelFeatureAndListen(slotIndex, callback); } } catch (RemoteException e) { Rlog.e(TAG, "getImsMmTelFeatureAndListen, RemoteException: " + e.getMessage()); } return null; } /** * Returns the {@link IImsRcsFeature} that corresponds to the given slot Id and RCS * feature for emergency calling or {@link null} if the service is not available. If an * RcsFeature is available, the {@link IImsServiceFeatureCallback} callback is registered as a * listener for feature updates. * @param slotIndex The SIM slot that we are requesting the {@link IImsRcsFeature} for. * @param callback Listener that will send updates to ImsManager when there are updates to * ImsServiceController. * @return {@link IImsRcsFeature} interface for the feature specified or {@code null} if * it is unavailable. * @hide */ public @Nullable IImsRcsFeature getImsRcsFeatureAndListen(int slotIndex, IImsServiceFeatureCallback callback) { try { ITelephony telephony = getITelephony(); if (telephony != null) { return telephony.getRcsFeatureAndListen(slotIndex, callback); } } catch (RemoteException e) { Rlog.e(TAG, "getImsRcsFeatureAndListen, RemoteException: " + e.getMessage()); } return null; } /** * Unregister a IImsServiceFeatureCallback previously associated with an ImsFeature through * {@link #getImsMmTelFeatureAndListen(int, IImsServiceFeatureCallback)} or * {@link #getImsRcsFeatureAndListen(int, IImsServiceFeatureCallback)}. * @param slotIndex The SIM slot associated with the callback. * @param featureType The {@link android.telephony.ims.feature.ImsFeature.FeatureType} * associated with the callback. * @param callback The callback to be unregistered. * @hide */ public void unregisterImsFeatureCallback(int slotIndex, int featureType, IImsServiceFeatureCallback callback) { try { ITelephony telephony = getITelephony(); if (telephony != null) { telephony.unregisterImsFeatureCallback(slotIndex, featureType, callback); } } catch (RemoteException e) { Rlog.e(TAG, "unregisterImsFeatureCallback, RemoteException: " + e.getMessage()); } } /** * @return the {@IImsRegistration} interface that corresponds with the slot index and feature. * @param slotIndex The SIM slot corresponding to the ImsService ImsRegistration is active for. Loading telephony/java/android/telephony/ims/ImsMmTelManager.java +1 −2 Original line number Diff line number Diff line Loading @@ -59,7 +59,6 @@ import java.util.function.Consumer; * manager. */ public class ImsMmTelManager implements RegistrationManager { private static final String TAG = "ImsMmTelManager"; /** * @hide Loading Loading @@ -810,7 +809,7 @@ public class ImsMmTelManager implements RegistrationManager { } try { iTelephony.isMmTelCapabilitySupported(mSubId, new IIntegerConsumer.Stub() { getITelephony().isMmTelCapabilitySupported(mSubId, new IIntegerConsumer.Stub() { @Override public void accept(int result) { executor.execute(() -> callback.accept(result == 1)); Loading telephony/java/android/telephony/ims/ImsService.java +0 −58 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package android.telephony.ims; import android.annotation.LongDef; import android.annotation.SystemApi; import android.annotation.TestApi; import android.app.Service; Loading @@ -42,11 +41,6 @@ import android.util.SparseArray; import com.android.ims.internal.IImsFeatureStatusCallback; import com.android.internal.annotations.VisibleForTesting; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.HashMap; import java.util.Map; /** * Main ImsService implementation, which binds via the Telephony ImsResolver. Services that extend * ImsService must register the service in their AndroidManifest to be detected by the framework. Loading Loading @@ -103,32 +97,6 @@ public class ImsService extends Service { private static final String LOG_TAG = "ImsService"; /** * This ImsService supports the capability to place emergency calls over MMTEL. * @hide This is encoded into the {@link ImsFeature#FEATURE_EMERGENCY_MMTEL}, but we will be * adding other capabilities in a central location, so track this capability here as well. */ public static final long CAPABILITY_EMERGENCY_OVER_MMTEL = 1 << 0; /** * @hide */ @LongDef(flag = true, prefix = "CAPABILITY_", value = { CAPABILITY_EMERGENCY_OVER_MMTEL }) @Retention(RetentionPolicy.SOURCE) public @interface ImsServiceCapability {} /** * Used for logging purposes, see {@link #getCapabilitiesString(long)} * @hide */ private static final Map<Long, String> CAPABILITIES_LOG_MAP = new HashMap<Long, String>() {{ put(CAPABILITY_EMERGENCY_OVER_MMTEL, "EMERGENCY_OVER_MMTEL"); }}; /** * The intent that must be defined as an intent-filter in the AndroidManifest of the ImsService. * @hide Loading Loading @@ -441,30 +409,4 @@ public class ImsService extends Service { public ImsRegistrationImplBase getRegistration(int slotId) { return new ImsRegistrationImplBase(); } /** * @return A string representation of the ImsService capabilties for logging. * @hide */ public static String getCapabilitiesString(@ImsServiceCapability long caps) { StringBuffer result = new StringBuffer(); result.append("capabilities={ "); // filter incrementally fills 0s from left to right. This is used to keep filtering out // more bits in the long until the remaining leftmost bits are all zero. long filter = 0xFFFFFFFFFFFFFFFFL; // position of iterator to potentially print capability. long i = 0; while ((caps & filter) != 0 && i <= 63) { long bitToCheck = (1L << i); if ((caps & bitToCheck) != 0) { result.append(CAPABILITIES_LOG_MAP.getOrDefault(bitToCheck, bitToCheck + "?")); result.append(" "); } // shift left by one and fill in another 1 on the leftmost bit. filter <<= 1; i++; } result.append("}"); return result.toString(); } } No newline at end of file telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl +0 −6 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import android.telephony.ims.aidl.IRcsUceControllerCallback; import android.telephony.ims.aidl.IRcsUcePublishStateCallback; import android.telephony.ims.aidl.IImsRegistrationCallback; import com.android.ims.internal.IImsServiceFeatureCallback; import com.android.internal.telephony.IIntegerConsumer; /** Loading Loading @@ -51,9 +50,4 @@ interface IImsRcsController { void setUceSettingEnabled(int subId, boolean isEnabled); void registerUcePublishStateCallback(int subId, IRcsUcePublishStateCallback c); void unregisterUcePublishStateCallback(int subId, IRcsUcePublishStateCallback c); // Internal commands that should not be made public void registerRcsFeatureCallback(int slotId, in IImsServiceFeatureCallback callback, boolean oneShot); void unregisterImsFeatureCallback(in IImsServiceFeatureCallback callback); } telephony/java/com/android/ims/ImsFeatureContainer.aidldeleted 100644 → 0 +0 −19 Original line number Diff line number Diff line /* * Copyright (C) 2020 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 com.android.ims; parcelable ImsFeatureContainer; No newline at end of file Loading
telephony/java/android/telephony/TelephonyManager.java +77 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,8 @@ import android.telephony.emergency.EmergencyNumber; import android.telephony.emergency.EmergencyNumber.EmergencyServiceCategories; import android.telephony.ims.ImsMmTelManager; import android.telephony.ims.aidl.IImsConfig; import android.telephony.ims.aidl.IImsMmTelFeature; import android.telephony.ims.aidl.IImsRcsFeature; import android.telephony.ims.aidl.IImsRegistration; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; Loading @@ -92,6 +94,7 @@ import android.text.TextUtils; import android.util.Log; import android.util.Pair; import com.android.ims.internal.IImsServiceFeatureCallback; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.CellNetworkScanResult; Loading Loading @@ -7305,6 +7308,80 @@ public class TelephonyManager { } } /** * Returns the {@link IImsMmTelFeature} that corresponds to the given slot Id and MMTel * feature or {@link null} if the service is not available. If an MMTelFeature is available, the * {@link IImsServiceFeatureCallback} callback is registered as a listener for feature updates. * @param slotIndex The SIM slot that we are requesting the {@link IImsMmTelFeature} for. * @param callback Listener that will send updates to ImsManager when there are updates to * ImsServiceController. * @return {@link IImsMmTelFeature} interface for the feature specified or {@code null} if * it is unavailable. * @hide */ public @Nullable IImsMmTelFeature getImsMmTelFeatureAndListen(int slotIndex, IImsServiceFeatureCallback callback) { try { ITelephony telephony = getITelephony(); if (telephony != null) { return telephony.getMmTelFeatureAndListen(slotIndex, callback); } } catch (RemoteException e) { Rlog.e(TAG, "getImsMmTelFeatureAndListen, RemoteException: " + e.getMessage()); } return null; } /** * Returns the {@link IImsRcsFeature} that corresponds to the given slot Id and RCS * feature for emergency calling or {@link null} if the service is not available. If an * RcsFeature is available, the {@link IImsServiceFeatureCallback} callback is registered as a * listener for feature updates. * @param slotIndex The SIM slot that we are requesting the {@link IImsRcsFeature} for. * @param callback Listener that will send updates to ImsManager when there are updates to * ImsServiceController. * @return {@link IImsRcsFeature} interface for the feature specified or {@code null} if * it is unavailable. * @hide */ public @Nullable IImsRcsFeature getImsRcsFeatureAndListen(int slotIndex, IImsServiceFeatureCallback callback) { try { ITelephony telephony = getITelephony(); if (telephony != null) { return telephony.getRcsFeatureAndListen(slotIndex, callback); } } catch (RemoteException e) { Rlog.e(TAG, "getImsRcsFeatureAndListen, RemoteException: " + e.getMessage()); } return null; } /** * Unregister a IImsServiceFeatureCallback previously associated with an ImsFeature through * {@link #getImsMmTelFeatureAndListen(int, IImsServiceFeatureCallback)} or * {@link #getImsRcsFeatureAndListen(int, IImsServiceFeatureCallback)}. * @param slotIndex The SIM slot associated with the callback. * @param featureType The {@link android.telephony.ims.feature.ImsFeature.FeatureType} * associated with the callback. * @param callback The callback to be unregistered. * @hide */ public void unregisterImsFeatureCallback(int slotIndex, int featureType, IImsServiceFeatureCallback callback) { try { ITelephony telephony = getITelephony(); if (telephony != null) { telephony.unregisterImsFeatureCallback(slotIndex, featureType, callback); } } catch (RemoteException e) { Rlog.e(TAG, "unregisterImsFeatureCallback, RemoteException: " + e.getMessage()); } } /** * @return the {@IImsRegistration} interface that corresponds with the slot index and feature. * @param slotIndex The SIM slot corresponding to the ImsService ImsRegistration is active for. Loading
telephony/java/android/telephony/ims/ImsMmTelManager.java +1 −2 Original line number Diff line number Diff line Loading @@ -59,7 +59,6 @@ import java.util.function.Consumer; * manager. */ public class ImsMmTelManager implements RegistrationManager { private static final String TAG = "ImsMmTelManager"; /** * @hide Loading Loading @@ -810,7 +809,7 @@ public class ImsMmTelManager implements RegistrationManager { } try { iTelephony.isMmTelCapabilitySupported(mSubId, new IIntegerConsumer.Stub() { getITelephony().isMmTelCapabilitySupported(mSubId, new IIntegerConsumer.Stub() { @Override public void accept(int result) { executor.execute(() -> callback.accept(result == 1)); Loading
telephony/java/android/telephony/ims/ImsService.java +0 −58 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package android.telephony.ims; import android.annotation.LongDef; import android.annotation.SystemApi; import android.annotation.TestApi; import android.app.Service; Loading @@ -42,11 +41,6 @@ import android.util.SparseArray; import com.android.ims.internal.IImsFeatureStatusCallback; import com.android.internal.annotations.VisibleForTesting; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.HashMap; import java.util.Map; /** * Main ImsService implementation, which binds via the Telephony ImsResolver. Services that extend * ImsService must register the service in their AndroidManifest to be detected by the framework. Loading Loading @@ -103,32 +97,6 @@ public class ImsService extends Service { private static final String LOG_TAG = "ImsService"; /** * This ImsService supports the capability to place emergency calls over MMTEL. * @hide This is encoded into the {@link ImsFeature#FEATURE_EMERGENCY_MMTEL}, but we will be * adding other capabilities in a central location, so track this capability here as well. */ public static final long CAPABILITY_EMERGENCY_OVER_MMTEL = 1 << 0; /** * @hide */ @LongDef(flag = true, prefix = "CAPABILITY_", value = { CAPABILITY_EMERGENCY_OVER_MMTEL }) @Retention(RetentionPolicy.SOURCE) public @interface ImsServiceCapability {} /** * Used for logging purposes, see {@link #getCapabilitiesString(long)} * @hide */ private static final Map<Long, String> CAPABILITIES_LOG_MAP = new HashMap<Long, String>() {{ put(CAPABILITY_EMERGENCY_OVER_MMTEL, "EMERGENCY_OVER_MMTEL"); }}; /** * The intent that must be defined as an intent-filter in the AndroidManifest of the ImsService. * @hide Loading Loading @@ -441,30 +409,4 @@ public class ImsService extends Service { public ImsRegistrationImplBase getRegistration(int slotId) { return new ImsRegistrationImplBase(); } /** * @return A string representation of the ImsService capabilties for logging. * @hide */ public static String getCapabilitiesString(@ImsServiceCapability long caps) { StringBuffer result = new StringBuffer(); result.append("capabilities={ "); // filter incrementally fills 0s from left to right. This is used to keep filtering out // more bits in the long until the remaining leftmost bits are all zero. long filter = 0xFFFFFFFFFFFFFFFFL; // position of iterator to potentially print capability. long i = 0; while ((caps & filter) != 0 && i <= 63) { long bitToCheck = (1L << i); if ((caps & bitToCheck) != 0) { result.append(CAPABILITIES_LOG_MAP.getOrDefault(bitToCheck, bitToCheck + "?")); result.append(" "); } // shift left by one and fill in another 1 on the leftmost bit. filter <<= 1; i++; } result.append("}"); return result.toString(); } } No newline at end of file
telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl +0 −6 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import android.telephony.ims.aidl.IRcsUceControllerCallback; import android.telephony.ims.aidl.IRcsUcePublishStateCallback; import android.telephony.ims.aidl.IImsRegistrationCallback; import com.android.ims.internal.IImsServiceFeatureCallback; import com.android.internal.telephony.IIntegerConsumer; /** Loading Loading @@ -51,9 +50,4 @@ interface IImsRcsController { void setUceSettingEnabled(int subId, boolean isEnabled); void registerUcePublishStateCallback(int subId, IRcsUcePublishStateCallback c); void unregisterUcePublishStateCallback(int subId, IRcsUcePublishStateCallback c); // Internal commands that should not be made public void registerRcsFeatureCallback(int slotId, in IImsServiceFeatureCallback callback, boolean oneShot); void unregisterImsFeatureCallback(in IImsServiceFeatureCallback callback); }
telephony/java/com/android/ims/ImsFeatureContainer.aidldeleted 100644 → 0 +0 −19 Original line number Diff line number Diff line /* * Copyright (C) 2020 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 com.android.ims; parcelable ImsFeatureContainer; No newline at end of file