summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Ebinger <breadley@google.com>2019-12-16 19:13:35 -0800
committerBrad Ebinger <breadley@google.com>2019-12-17 15:35:29 -0800
commit674766afb2abbe00a26a3265cbcb5d9d3a298263 (patch)
tree95a08b050803dfd6c67a6369cc39bda4ceb8cb10
parentd6ccadb8a14fcc38065011aa4fd898298a733c33 (diff)
downloadims-674766afb2abbe00a26a3265cbcb5d9d3a298263.tar.gz
Clean up hidden dependencies
1) Remove imports that are not used 2) Remove hidden dependencies from RcsService. ucepresencelib is next. Bug: 111305845 Test: build; manual test of capability query. Change-Id: I8377325709ca64ee0e0b9e881c54e69b4855200e
-rw-r--r--rcs/rcsservice/Android.bp3
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/LauncherUtils.java3
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/RcsService.java244
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/RcsServiceApp.java3
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/RcsSettingUtils.java12
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/RcsStackAdaptor.java41
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/RcsUtils.java8
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/Task.java8
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/TaskManager.java25
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/presence/AlarmBroadcastReceiver.java1
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/presence/PresenceAvailabilityTask.java20
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/presence/PresenceBase.java12
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/presence/PresenceCapabilityTask.java16
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/presence/PresenceInfoParser.java7
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/presence/PresencePublication.java174
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/presence/PresencePublishTask.java18
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/presence/PresenceSubscriber.java50
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/presence/PresenceTask.java15
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/presence/StackListener.java26
19 files changed, 262 insertions, 424 deletions
diff --git a/rcs/rcsservice/Android.bp b/rcs/rcsservice/Android.bp
index 24153a5..ba191e8 100644
--- a/rcs/rcsservice/Android.bp
+++ b/rcs/rcsservice/Android.bp
@@ -59,9 +59,6 @@ android_app {
"src/com/android/service/ims/RcsService.java",
"src/com/android/service/ims/RcsServiceApp.java"
],
- libs: [
- "ims-common",
- ],
static_libs: [
"ucepresencelib"
],
diff --git a/rcs/rcsservice/src/com/android/service/ims/LauncherUtils.java b/rcs/rcsservice/src/com/android/service/ims/LauncherUtils.java
index 407a5a7..00252bf 100644
--- a/rcs/rcsservice/src/com/android/service/ims/LauncherUtils.java
+++ b/rcs/rcsservice/src/com/android/service/ims/LauncherUtils.java
@@ -28,12 +28,11 @@
package com.android.service.ims;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
-import android.content.ComponentName;
import com.android.ims.internal.Logger;
-import com.android.service.ims.RcsService;
/**
* Launcher utility functions
diff --git a/rcs/rcsservice/src/com/android/service/ims/RcsService.java b/rcs/rcsservice/src/com/android/service/ims/RcsService.java
index 953db2f..78708da 100644
--- a/rcs/rcsservice/src/com/android/service/ims/RcsService.java
+++ b/rcs/rcsservice/src/com/android/service/ims/RcsService.java
@@ -28,51 +28,60 @@
package com.android.service.ims;
-import java.util.List;
-
+import android.app.Service;
import android.content.Intent;
-import android.content.IntentFilter;
+import android.database.ContentObserver;
+import android.net.ConnectivityManager;
+import android.os.Handler;
import android.os.IBinder;
+import android.os.Looper;
import android.os.RemoteException;
-import android.content.Context;
-import android.app.Service;
import android.os.ServiceManager;
-import android.os.Handler;
-import android.database.ContentObserver;
-import android.content.BroadcastReceiver;
import android.provider.Settings;
-import android.net.ConnectivityManager;
-import com.android.ims.ImsManager;
-import com.android.ims.ImsConnectionStateListener;
-import com.android.ims.ImsException;
+import android.telephony.AccessNetworkConstants;
+import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
+import android.telephony.ims.ImsException;
+import android.telephony.ims.ImsMmTelManager;
import android.telephony.ims.ImsReasonInfo;
+import android.telephony.ims.RegistrationManager;
+import android.telephony.ims.feature.MmTelFeature;
-import com.android.ims.RcsManager.ResultCode;
-import com.android.ims.internal.IRcsService;
import com.android.ims.IRcsPresenceListener;
+import com.android.ims.RcsManager.ResultCode;
import com.android.ims.internal.IRcsPresence;
-
+import com.android.ims.internal.IRcsService;
import com.android.ims.internal.Logger;
import com.android.internal.telephony.IccCardConstants;
-import com.android.internal.telephony.TelephonyIntents;
-
+import com.android.service.ims.R;
import com.android.service.ims.presence.PresencePublication;
import com.android.service.ims.presence.PresenceSubscriber;
-import com.android.service.ims.R;
+import java.util.List;
+
+public class RcsService extends Service {
+
+ private static final int IMS_SERVICE_RETRY_TIMEOUT_MS = 5000;
-public class RcsService extends Service{
- /**
- * The logger
- */
private Logger logger = Logger.getLogger(this.getClass().getName());
private RcsStackAdaptor mRcsStackAdaptor = null;
private PresencePublication mPublication = null;
private PresenceSubscriber mSubscriber = null;
- private BroadcastReceiver mReceiver = null;
+ private Handler mRetryHandler;
+ private Runnable mRegisterCallbacks = this::registerImsCallbacksAndSetAssociatedSubscription;
+ private int mNetworkRegistrationType = AccessNetworkConstants.TRANSPORT_TYPE_INVALID;
+
+ private int mAssociatedSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+
+ private SubscriptionManager.OnSubscriptionsChangedListener mOnSubscriptionsChangedListener
+ = new SubscriptionManager.OnSubscriptionsChangedListener() {
+ @Override
+ public void onSubscriptionsChanged() {
+ registerImsCallbacksAndSetAssociatedSubscription();
+ }
+ };
@Override
public void onCreate() {
@@ -118,54 +127,94 @@ public class RcsService extends Service{
getContentResolver().registerContentObserver(
SubscriptionManager.CONTENT_URI, false, mSiminfoSettingObserver);
- mReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- logger.print("onReceive intent=" + intent);
- if(ImsManager.ACTION_IMS_SERVICE_UP.equalsIgnoreCase(
- intent.getAction())){
- handleImsServiceUp();
- } else if(ImsManager.ACTION_IMS_SERVICE_DOWN.equalsIgnoreCase(
- intent.getAction())){
- handleImsServiceDown();
- } else if(TelephonyIntents.ACTION_SIM_STATE_CHANGED.equalsIgnoreCase(
- intent.getAction())) {
- String stateExtra = intent.getStringExtra(
- IccCardConstants.INTENT_KEY_ICC_STATE);
- handleSimStateChanged(stateExtra);
+ mRetryHandler = new Handler(Looper.getMainLooper());
+ registerSubscriptionChangedListener();
+ }
+
+ private void registerSubscriptionChangedListener() {
+ SubscriptionManager subscriptionManager = getSystemService(SubscriptionManager.class);
+ if (subscriptionManager != null) {
+ // This will call back after the listener is added automatically.
+ subscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangedListener);
+ } else {
+ logger.error("SubscriptionManager not available! Retrying...");
+ // Retry this again after some time.
+ mRetryHandler.postDelayed(this::registerSubscriptionChangedListener,
+ IMS_SERVICE_RETRY_TIMEOUT_MS);
+ }
+ }
+
+ private void registerImsCallbacksAndSetAssociatedSubscription() {
+ SubscriptionManager sm = getSystemService(SubscriptionManager.class);
+ if (sm == null) {
+ logger.warn("handleSubscriptionsChanged: SubscriptionManager is null!");
+ return;
+ }
+ List<SubscriptionInfo> infos = sm.getActiveSubscriptionInfoList();
+ if (infos == null || infos.isEmpty()) {
+ // There are no active subscriptions right now.
+ handleImsServiceDown();
+ } else {
+ int defaultVoiceSub = SubscriptionManager.getDefaultVoiceSubscriptionId();
+ // Get default voice id and then try to register for IMS callbacks
+ if (defaultVoiceSub == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ for (SubscriptionInfo info : infos) {
+ if (!info.isOpportunistic()) {
+ defaultVoiceSub = info.getSubscriptionId();
+ break;
+ }
}
}
- };
+ if (defaultVoiceSub == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ handleImsServiceDown();
+ return;
+ }
- IntentFilter statusFilter = new IntentFilter();
- statusFilter.addAction(ImsManager.ACTION_IMS_SERVICE_UP);
- statusFilter.addAction(ImsManager.ACTION_IMS_SERVICE_DOWN);
- statusFilter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED);
- registerReceiver(mReceiver, statusFilter);
+ ImsMmTelManager mIms = ImsMmTelManager.createForSubscriptionId(defaultVoiceSub);
+ try {
+ if (defaultVoiceSub == mAssociatedSubscription) {
+ // Don't register duplicate callbacks for the same subscription.
+ return;
+ }
+ if (mAssociatedSubscription != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ // Get rid of any existing registrations.
+ ImsMmTelManager mOldIms = ImsMmTelManager.createForSubscriptionId(
+ mAssociatedSubscription);
+ mOldIms.unregisterImsRegistrationCallback(mImsRegistrationCallback);
+ mOldIms.unregisterMmTelCapabilityCallback(mCapabilityCallback);
+ logger.print("callbacks unregistered for sub " + mAssociatedSubscription);
+ }
+ // move over registrations.
+ mIms.registerImsRegistrationCallback(getMainExecutor(), mImsRegistrationCallback);
+ mIms.registerMmTelCapabilityCallback(getMainExecutor(), mCapabilityCallback);
+ mAssociatedSubscription = defaultVoiceSub;
+ logger.print("callbacks registered for sub " + mAssociatedSubscription);
+ handleImsServiceUp();
+ } catch (ImsException e) {
+ logger.info("Couldn't register callbacks for " + defaultVoiceSub + ": "
+ + e.getMessage());
+ if (e.getCode() == ImsException.CODE_ERROR_SERVICE_UNAVAILABLE) {
+ // IMS temporarily unavailable. Retry after a few seconds.
+ mRetryHandler.removeCallbacks(mRegisterCallbacks);
+ mRetryHandler.postDelayed(mRegisterCallbacks, IMS_SERVICE_RETRY_TIMEOUT_MS);
+ }
+ }
+ }
}
public void handleImsServiceUp() {
if(mPublication != null) {
mPublication.handleImsServiceUp();
}
-
- registerImsConnectionStateListener();
}
public void handleImsServiceDown() {
+ mAssociatedSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
if(mPublication != null) {
mPublication.handleImsServiceDown();
}
}
- public void handleSimStateChanged(String state) {
-
- if(IccCardConstants.INTENT_VALUE_ICC_LOADED.equalsIgnoreCase(state)) {
- // ImsManager depends on a loaded SIM to get the default Voice Registration.
- registerImsConnectionStateListener();
- }
- }
-
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
@@ -181,10 +230,8 @@ public class RcsService extends Service{
public void onDestroy() {
getContentResolver().unregisterContentObserver(mObserver);
getContentResolver().unregisterContentObserver(mSiminfoSettingObserver);
- if (mReceiver != null) {
- unregisterReceiver(mReceiver);
- mReceiver = null;
- }
+ getSystemService(SubscriptionManager.class)
+ .removeOnSubscriptionsChangedListener(mOnSubscriptionsChangedListener);
mRcsStackAdaptor.finish();
mPublication.finish();
@@ -199,11 +246,7 @@ public class RcsService extends Service{
return mPublication;
}
- public PresenceSubscriber getPresenceSubscriber(){
- return mSubscriber;
- }
-
- IRcsPresence.Stub mIRcsPresenceImpl = new IRcsPresence.Stub(){
+ IRcsPresence.Stub mIRcsPresenceImpl = new IRcsPresence.Stub() {
/**
* Asyncrhonously request the latest capability for a given contact list.
* The result will be saved to DB directly if the contactNumber can be found in DB.
@@ -331,15 +374,18 @@ public class RcsService extends Service{
@Override
public void onChange(final boolean selfChange) {
- ImsManager imsManager = ImsManager.getInstance(RcsService.this,
- SubscriptionManager.getDefaultVoicePhoneId());
- if (imsManager == null) {
+ if (mAssociatedSubscription == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
return;
}
- boolean enabled = imsManager.isVtEnabledByUser();
- logger.debug("vt enabled status: " + (enabled ? "ON" : "OFF"));
-
- onVtEnabled(enabled);
+ ImsMmTelManager ims = ImsMmTelManager.createForSubscriptionId(mAssociatedSubscription);
+ try {
+ boolean enabled = ims.isVtSettingEnabled();
+ logger.debug("vt enabled status: " + (enabled ? "ON" : "OFF"));
+ onVtEnabled(enabled);
+ } catch (Exception e) {
+ logger.info("Exception getting VT status for sub:" + mAssociatedSubscription
+ + ", Exception = " + e.getMessage());
+ }
}
}
@@ -372,45 +418,35 @@ public class RcsService extends Service{
}
};
- void registerImsConnectionStateListener() {
- try {
- ImsManager imsManager = ImsManager.getInstance(this,
- SubscriptionManager.getDefaultVoicePhoneId());
- if (imsManager != null) {
- imsManager.addRegistrationListener(mImsConnectionStateListener);
+ private RegistrationManager.RegistrationCallback mImsRegistrationCallback
+ = new RegistrationManager.RegistrationCallback() {
+
+ @Override
+ public void onRegistered(int imsTransportType) {
+ logger.debug("onImsConnected imsTransportType=" + imsTransportType);
+ mNetworkRegistrationType = imsTransportType;
+ if(mPublication != null) {
+ mPublication.onImsConnected();
}
- } catch (ImsException e) {
- logger.error("addRegistrationListener exception=", e);
}
- }
- private ImsConnectionStateListener mImsConnectionStateListener =
- new ImsConnectionStateListener() {
- @Override
- public void onImsConnected(int imsRadioTech) {
- logger.debug("onImsConnected imsRadioTech=" + imsRadioTech);
-
- if(mPublication != null) {
- mPublication.onImsConnected();
- }
+ @Override
+ public void onUnregistered(ImsReasonInfo info) {
+ logger.debug("onImsDisconnected");
+ mNetworkRegistrationType = AccessNetworkConstants.TRANSPORT_TYPE_INVALID;
+ if(mPublication != null) {
+ mPublication.onImsDisconnected();
}
+ }
+ };
- @Override
- public void onImsDisconnected(ImsReasonInfo imsReasonInfo) {
- logger.debug("onImsDisconnected");
- if(mPublication != null) {
- mPublication.onImsDisconnected();
- }
- }
+ private ImsMmTelManager.CapabilityCallback mCapabilityCallback
+ = new ImsMmTelManager.CapabilityCallback() {
- @Override
- public void onFeatureCapabilityChanged(final int serviceClass,
- final int[] enabledFeatures, final int[] disabledFeatures) {
- logger.debug("onFeatureCapabilityChanged");
- if(mPublication != null) {
- mPublication.onFeatureCapabilityChanged(serviceClass, enabledFeatures, disabledFeatures);
- }
- }
- };
+ @Override
+ public void onCapabilitiesStatusChanged(MmTelFeature.MmTelCapabilities capabilities) {
+ mPublication.onFeatureCapabilityChanged(mNetworkRegistrationType, capabilities);
+ }
+ };
}
diff --git a/rcs/rcsservice/src/com/android/service/ims/RcsServiceApp.java b/rcs/rcsservice/src/com/android/service/ims/RcsServiceApp.java
index c1f683d..c54668d 100644
--- a/rcs/rcsservice/src/com/android/service/ims/RcsServiceApp.java
+++ b/rcs/rcsservice/src/com/android/service/ims/RcsServiceApp.java
@@ -29,9 +29,8 @@
package com.android.service.ims;
import android.app.Application;
-import android.content.Context;
+
import com.android.ims.internal.Logger;
-import android.os.SystemProperties;
public class RcsServiceApp extends Application {
private Logger logger = Logger.getLogger(this.getClass().getName());
diff --git a/rcs/rcsservice/src/com/android/service/ims/RcsSettingUtils.java b/rcs/rcsservice/src/com/android/service/ims/RcsSettingUtils.java
index 40de8f7..40fb709 100644
--- a/rcs/rcsservice/src/com/android/service/ims/RcsSettingUtils.java
+++ b/rcs/rcsservice/src/com/android/service/ims/RcsSettingUtils.java
@@ -28,19 +28,13 @@
package com.android.service.ims;
-import java.lang.String;
-
+import android.content.Context;
import android.os.PersistableBundle;
import android.telephony.CarrierConfigManager;
-import android.telephony.TelephonyManager;
-import android.content.Context;
+
import com.android.ims.ImsConfig;
-import com.android.ims.ImsManager;
import com.android.ims.ImsException;
-import android.os.SystemProperties;
-
-import com.android.ims.RcsManager.ResultCode;
-
+import com.android.ims.ImsManager;
import com.android.ims.internal.Logger;
public class RcsSettingUtils{
diff --git a/rcs/rcsservice/src/com/android/service/ims/RcsStackAdaptor.java b/rcs/rcsservice/src/com/android/service/ims/RcsStackAdaptor.java
index 902f6c7..eb2edd7 100644
--- a/rcs/rcsservice/src/com/android/service/ims/RcsStackAdaptor.java
+++ b/rcs/rcsservice/src/com/android/service/ims/RcsStackAdaptor.java
@@ -28,58 +28,41 @@
package com.android.service.ims;
-import java.util.List;
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-
+import android.app.AlarmManager;
+import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.content.pm.ServiceInfo;
import android.content.Context;
import android.content.Intent;
-import android.app.PendingIntent;
import android.content.IntentFilter;
-import android.content.ServiceConnection;
import android.os.Handler;
import android.os.HandlerThread;
-import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.os.RemoteException;
-import android.telephony.TelephonyManager;
-import android.app.AlarmManager;
import android.os.SystemClock;
import android.os.SystemProperties;
-import com.android.ims.ImsConfig;
-import com.android.ims.ImsManager;
-import com.android.ims.ImsException;
import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
import com.android.ims.IRcsPresenceListener;
-import com.android.ims.RcsPresence;
import com.android.ims.RcsManager.ResultCode;
+import com.android.ims.RcsPresence;
import com.android.ims.RcsPresence.PublishState;
-
-import com.android.ims.internal.Logger;
+import com.android.ims.RcsPresenceInfo;
import com.android.ims.internal.ContactNumberUtils;
-import com.android.service.ims.presence.PresencePublication;
-
+import com.android.ims.internal.Logger;
+import com.android.ims.internal.uce.common.CapInfo;
+import com.android.ims.internal.uce.common.StatusCode;
+import com.android.ims.internal.uce.common.UceLong;
import com.android.ims.internal.uce.presence.IPresenceService;
import com.android.ims.internal.uce.presence.PresCapInfo;
-import com.android.ims.internal.uce.common.CapInfo;
import com.android.ims.internal.uce.uceservice.IUceService;
import com.android.ims.internal.uce.uceservice.ImsUceManager;
-import com.android.ims.internal.uce.common.UceLong;
-import com.android.ims.internal.uce.common.StatusCode;
-
-import com.android.ims.IRcsPresenceListener;
-import com.android.ims.RcsPresenceInfo;
-
-import com.android.service.ims.presence.StackListener;
-import com.android.service.ims.presence.PresenceInfoParser;
import com.android.service.ims.presence.AlarmBroadcastReceiver;
+import com.android.service.ims.presence.PresenceInfoParser;
+import com.android.service.ims.presence.PresencePublication;
+import com.android.service.ims.presence.StackListener;
public class RcsStackAdaptor{
private static final boolean DEBUG = true;
diff --git a/rcs/rcsservice/src/com/android/service/ims/RcsUtils.java b/rcs/rcsservice/src/com/android/service/ims/RcsUtils.java
index bbfacd2..22e156e 100644
--- a/rcs/rcsservice/src/com/android/service/ims/RcsUtils.java
+++ b/rcs/rcsservice/src/com/android/service/ims/RcsUtils.java
@@ -28,15 +28,9 @@
package com.android.service.ims;
-import java.lang.String;
-import android.telephony.TelephonyManager;
-import android.content.Context;
-
-import com.android.ims.internal.uce.common.StatusCode;
-
import com.android.ims.RcsManager.ResultCode;
-
import com.android.ims.internal.Logger;
+import com.android.ims.internal.uce.common.StatusCode;
public class RcsUtils{
/*
diff --git a/rcs/rcsservice/src/com/android/service/ims/Task.java b/rcs/rcsservice/src/com/android/service/ims/Task.java
index a58aebf..eb36a5f 100644
--- a/rcs/rcsservice/src/com/android/service/ims/Task.java
+++ b/rcs/rcsservice/src/com/android/service/ims/Task.java
@@ -28,14 +28,8 @@
package com.android.service.ims;
-import java.util.Set;
-import java.util.HashMap;
-import java.util.List;
-import java.util.ArrayList;
-import android.os.RemoteException;
-
-import com.android.ims.internal.Logger;
import com.android.ims.IRcsPresenceListener;
+import com.android.ims.internal.Logger;
/**
* Task
diff --git a/rcs/rcsservice/src/com/android/service/ims/TaskManager.java b/rcs/rcsservice/src/com/android/service/ims/TaskManager.java
index 74e11a6..a643861 100644
--- a/rcs/rcsservice/src/com/android/service/ims/TaskManager.java
+++ b/rcs/rcsservice/src/com/android/service/ims/TaskManager.java
@@ -28,30 +28,23 @@
package com.android.service.ims;
-import java.util.Set;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.List;
-import java.util.ArrayList;
-import android.os.RemoteException;
import android.content.Context;
import android.os.Handler;
-import android.os.Message;
import android.os.HandlerThread;
import android.os.Looper;
+import android.os.Message;
import android.telephony.PhoneNumberUtils;
-import com.android.ims.internal.uce.presence.PresCmdStatus;
-
-import com.android.ims.internal.Logger;
-import com.android.ims.RcsManager.ResultCode;
-import com.android.ims.RcsPresenceInfo;
import com.android.ims.IRcsPresenceListener;
-
-import com.android.service.ims.presence.PresenceTask;
-import com.android.service.ims.presence.PresenceCapabilityTask;
+import com.android.ims.internal.Logger;
import com.android.service.ims.presence.PresenceAvailabilityTask;
+import com.android.service.ims.presence.PresenceCapabilityTask;
+import com.android.service.ims.presence.PresenceTask;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
/**
* TaskManager
diff --git a/rcs/rcsservice/src/com/android/service/ims/presence/AlarmBroadcastReceiver.java b/rcs/rcsservice/src/com/android/service/ims/presence/AlarmBroadcastReceiver.java
index cd213a9..f191186 100644
--- a/rcs/rcsservice/src/com/android/service/ims/presence/AlarmBroadcastReceiver.java
+++ b/rcs/rcsservice/src/com/android/service/ims/presence/AlarmBroadcastReceiver.java
@@ -33,7 +33,6 @@ import android.content.Context;
import android.content.Intent;
import com.android.ims.internal.Logger;
-
import com.android.service.ims.RcsStackAdaptor;
import com.android.service.ims.TaskManager;
diff --git a/rcs/rcsservice/src/com/android/service/ims/presence/PresenceAvailabilityTask.java b/rcs/rcsservice/src/com/android/service/ims/presence/PresenceAvailabilityTask.java
index 99c698f..a008589 100644
--- a/rcs/rcsservice/src/com/android/service/ims/presence/PresenceAvailabilityTask.java
+++ b/rcs/rcsservice/src/com/android/service/ims/presence/PresenceAvailabilityTask.java
@@ -28,26 +28,8 @@
package com.android.service.ims.presence;
-import java.util.Set;
-import java.util.HashMap;
-import java.util.List;
-import java.util.ArrayList;
-import android.content.Context;
-import android.content.Intent;
-import android.app.PendingIntent;
-import android.content.IntentFilter;
-import android.os.RemoteException;
-import android.app.AlarmManager;
-import android.os.SystemClock;
-
-import com.android.ims.internal.uce.presence.PresCmdStatus;
-
-import com.android.ims.internal.Logger;
-import com.android.ims.RcsManager.ResultCode;
-import com.android.ims.RcsPresenceInfo;
import com.android.ims.IRcsPresenceListener;
-
-import com.android.service.ims.TaskManager;
+import com.android.ims.internal.Logger;
/**
* PresenceAvailabilityTask
diff --git a/rcs/rcsservice/src/com/android/service/ims/presence/PresenceBase.java b/rcs/rcsservice/src/com/android/service/ims/presence/PresenceBase.java
index 290e650..abe6fd7 100644
--- a/rcs/rcsservice/src/com/android/service/ims/presence/PresenceBase.java
+++ b/rcs/rcsservice/src/com/android/service/ims/presence/PresenceBase.java
@@ -28,26 +28,16 @@
package com.android.service.ims.presence;
-import java.lang.String;
-import android.content.ContentResolver;
-import android.content.ContentValues;
import android.content.Context;
import android.os.RemoteException;
import android.content.Intent;
-import com.android.internal.telephony.TelephonyIntents;
-import android.content.ComponentName;
-import com.android.ims.internal.uce.common.StatusCode;
-import com.android.ims.internal.uce.common.StatusCode;
import com.android.ims.internal.uce.presence.PresCmdStatus;
-import com.android.ims.internal.uce.presence.PresResInfo;
import com.android.ims.internal.uce.presence.PresSipResponse;
-
import com.android.ims.RcsManager.ResultCode;
import com.android.ims.RcsPresence.PublishState;
-import com.android.ims.RcsPresenceInfo;
-
import com.android.ims.internal.Logger;
+import com.android.internal.telephony.TelephonyIntents;
import com.android.service.ims.Task;
import com.android.service.ims.RcsUtils;
import com.android.service.ims.TaskManager;
diff --git a/rcs/rcsservice/src/com/android/service/ims/presence/PresenceCapabilityTask.java b/rcs/rcsservice/src/com/android/service/ims/presence/PresenceCapabilityTask.java
index 8dbc120..ff69915 100644
--- a/rcs/rcsservice/src/com/android/service/ims/presence/PresenceCapabilityTask.java
+++ b/rcs/rcsservice/src/com/android/service/ims/presence/PresenceCapabilityTask.java
@@ -28,25 +28,15 @@
package com.android.service.ims.presence;
-import java.util.Set;
-import java.util.HashMap;
-import java.util.List;
-import java.util.ArrayList;
+import android.app.AlarmManager;
+import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
-import android.app.PendingIntent;
-import android.content.IntentFilter;
import android.os.RemoteException;
-import android.app.AlarmManager;
import android.os.SystemClock;
-import com.android.ims.internal.uce.presence.PresCmdStatus;
-
-import com.android.ims.RcsManager.ResultCode;
-import com.android.ims.RcsPresenceInfo;
-import com.android.ims.IRcsPresenceListener;
-
import com.android.ims.internal.Logger;
+import com.android.ims.IRcsPresenceListener;
import com.android.service.ims.TaskManager;
/**
diff --git a/rcs/rcsservice/src/com/android/service/ims/presence/PresenceInfoParser.java b/rcs/rcsservice/src/com/android/service/ims/presence/PresenceInfoParser.java
index 6dabb28..1b3d795 100644
--- a/rcs/rcsservice/src/com/android/service/ims/presence/PresenceInfoParser.java
+++ b/rcs/rcsservice/src/com/android/service/ims/presence/PresenceInfoParser.java
@@ -30,21 +30,16 @@ package com.android.service.ims.presence;
import java.lang.String;
import java.util.ArrayList;
-import java.util.List;
-import android.text.TextUtils;
+import com.android.ims.internal.Logger;
import com.android.ims.internal.uce.presence.PresTupleInfo;
import com.android.ims.internal.uce.presence.PresRlmiInfo;
import com.android.ims.internal.uce.presence.PresResInfo;
import com.android.ims.internal.uce.presence.PresResInstanceInfo;
-
-import com.android.ims.RcsManager.ResultCode;
import com.android.ims.RcsPresenceInfo;
import com.android.ims.RcsPresenceInfo.ServiceType;
import com.android.ims.RcsPresenceInfo.ServiceState;
-import com.android.ims.internal.Logger;
-
public class PresenceInfoParser{
/*
* The logger
diff --git a/rcs/rcsservice/src/com/android/service/ims/presence/PresencePublication.java b/rcs/rcsservice/src/com/android/service/ims/presence/PresencePublication.java
index e7607ee..f827622 100644
--- a/rcs/rcsservice/src/com/android/service/ims/presence/PresencePublication.java
+++ b/rcs/rcsservice/src/com/android/service/ims/presence/PresencePublication.java
@@ -28,7 +28,6 @@
package com.android.service.ims.presence;
-import java.util.List;
import java.util.Arrays;
import android.content.Context;
@@ -37,10 +36,10 @@ import com.android.internal.telephony.Phone;
import android.provider.Settings;
import android.os.SystemProperties;
import android.content.BroadcastReceiver;
-import android.content.ComponentName;
+import android.telephony.AccessNetworkConstants;
+import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
-import com.android.internal.telephony.IccCardConstants;
-import com.android.internal.telephony.TelephonyIntents;
+
import android.telecom.TelecomManager;
import android.content.IntentFilter;
import android.app.PendingIntent;
@@ -48,33 +47,26 @@ import android.app.AlarmManager;
import android.os.SystemClock;
import android.os.Message;
import android.os.Handler;
+import android.telephony.ims.feature.MmTelFeature;
import com.android.ims.ImsManager;
-import com.android.ims.ImsConnectionStateListener;
import com.android.ims.ImsServiceClass;
-import com.android.ims.ImsException;
-import android.telephony.SubscriptionManager;
import com.android.ims.ImsConfig;
-import com.android.ims.ImsConfig.FeatureConstants;
-import com.android.ims.ImsConfig.FeatureValueConstants;
-
-import com.android.service.ims.RcsSettingUtils;
-import com.android.ims.RcsPresenceInfo;
-import com.android.ims.IRcsPresenceListener;
-import com.android.ims.RcsManager.ResultCode;
-import com.android.ims.RcsPresence.PublishState;
-
import com.android.ims.internal.Logger;
-import com.android.service.ims.TaskManager;
-import com.android.service.ims.Task;
-
import com.android.ims.internal.uce.presence.PresPublishTriggerType;
import com.android.ims.internal.uce.presence.PresSipResponse;
-import com.android.ims.internal.uce.common.StatusCode;
import com.android.ims.internal.uce.presence.PresCmdStatus;
-
+import com.android.ims.RcsPresenceInfo;
+import com.android.ims.IRcsPresenceListener;
+import com.android.ims.RcsManager.ResultCode;
+import com.android.ims.RcsPresence.PublishState;
+import com.android.internal.telephony.IccCardConstants;
+import com.android.internal.telephony.TelephonyIntents;
+import com.android.service.ims.RcsSettingUtils;
import com.android.service.ims.RcsStackAdaptor;
+import com.android.service.ims.Task;
+import com.android.service.ims.TaskManager;
public class PresencePublication extends PresenceBase {
private Logger logger = Logger.getLogger(this.getClass().getName());
@@ -1108,101 +1100,65 @@ public class PresencePublication extends PresenceBase {
finish();
}
- public void onFeatureCapabilityChanged(final int serviceClass,
- final int[] enabledFeatures, final int[] disabledFeatures) {
- logger.debug("onFeatureCapabilityChanged serviceClass="+serviceClass
- +", enabledFeatures="+Arrays.toString(enabledFeatures)
- +", disabledFeatures="+Arrays.toString(disabledFeatures));
+ public void onFeatureCapabilityChanged(int networkType,
+ MmTelFeature.MmTelCapabilities capabilities) {
+ logger.debug("onFeatureCapabilityChanged networkType=" + networkType
+ +", capabilities=" + capabilities);
- Thread thread = new Thread(new Runnable() {
- @Override
- public void run() {
- onFeatureCapabilityChangedInternal(serviceClass,
- enabledFeatures, disabledFeatures);
- }
- }, "onFeatureCapabilityChangedInternal thread");
+ Thread thread = new Thread(() -> onFeatureCapabilityChangedInternal(networkType,
+ capabilities), "onFeatureCapabilityChangedInternal thread");
thread.start();
}
- synchronized private void onFeatureCapabilityChangedInternal(int serviceClass,
- int[] enabledFeatures, int[] disabledFeatures) {
- if (serviceClass == ImsServiceClass.MMTEL) {
- boolean oldIsVolteAvailable = mIsVolteAvailable;
- boolean oldIsVtAvailable = mIsVtAvailable;
- boolean oldIsVoWifiAvailable = mIsVoWifiAvailable;
- boolean oldIsViWifiAvailable = mIsViWifiAvailable;
-
- if(enabledFeatures[ImsConfig.FeatureConstants.FEATURE_TYPE_VOICE_OVER_LTE] ==
- ImsConfig.FeatureConstants.FEATURE_TYPE_VOICE_OVER_LTE) {
- mIsVolteAvailable = true;
- } else if(enabledFeatures[ImsConfig.FeatureConstants.FEATURE_TYPE_VOICE_OVER_LTE] ==
- ImsConfig.FeatureConstants.FEATURE_TYPE_UNKNOWN) {
- mIsVolteAvailable = false;
- } else {
- logger.print("invalid value for FEATURE_TYPE_VOICE_OVER_LTE");
- }
-
- if(enabledFeatures[ImsConfig.FeatureConstants.FEATURE_TYPE_VOICE_OVER_WIFI] ==
- ImsConfig.FeatureConstants.FEATURE_TYPE_VOICE_OVER_WIFI) {
- mIsVoWifiAvailable = true;
- } else if(enabledFeatures[ImsConfig.FeatureConstants.FEATURE_TYPE_VOICE_OVER_WIFI] ==
- ImsConfig.FeatureConstants.FEATURE_TYPE_UNKNOWN) {
- mIsVoWifiAvailable = false;
- } else {
- logger.print("invalid value for FEATURE_TYPE_VOICE_OVER_WIFI");
- }
-
- if (enabledFeatures[ImsConfig.FeatureConstants.FEATURE_TYPE_VIDEO_OVER_LTE] ==
- ImsConfig.FeatureConstants.FEATURE_TYPE_VIDEO_OVER_LTE) {
- mIsVtAvailable = true;
- } else if (enabledFeatures[ImsConfig.FeatureConstants.FEATURE_TYPE_VIDEO_OVER_LTE] ==
- ImsConfig.FeatureConstants.FEATURE_TYPE_UNKNOWN) {
- mIsVtAvailable = false;
- } else {
- logger.print("invalid value for FEATURE_TYPE_VIDEO_OVER_LTE");
- }
-
- if(enabledFeatures[ImsConfig.FeatureConstants.FEATURE_TYPE_VIDEO_OVER_WIFI] ==
- ImsConfig.FeatureConstants.FEATURE_TYPE_VIDEO_OVER_WIFI) {
- mIsViWifiAvailable = true;
- } else if(enabledFeatures[ImsConfig.FeatureConstants.FEATURE_TYPE_VIDEO_OVER_WIFI] ==
- ImsConfig.FeatureConstants.FEATURE_TYPE_UNKNOWN) {
- mIsViWifiAvailable = false;
- } else {
- logger.print("invalid value for FEATURE_TYPE_VIDEO_OVER_WIFI");
- }
-
- logger.print("mIsVolteAvailable=" + mIsVolteAvailable +
- " mIsVoWifiAvailable=" + mIsVoWifiAvailable +
- " mIsVtAvailable=" + mIsVtAvailable +
- " mIsViWifiAvailable=" + mIsViWifiAvailable +
- " oldIsVolteAvailable=" + oldIsVolteAvailable +
- " oldIsVoWifiAvailable=" + oldIsVoWifiAvailable +
- " oldIsVtAvailable=" + oldIsVtAvailable +
- " oldIsViWifiAvailable=" + oldIsViWifiAvailable);
-
- if(oldIsVolteAvailable != mIsVolteAvailable ||
- oldIsVtAvailable != mIsVtAvailable ||
- oldIsVoWifiAvailable != mIsVoWifiAvailable ||
- oldIsViWifiAvailable != mIsViWifiAvailable) {
- if(mGotTriggerFromStack) {
- if((Settings.Global.getInt(mContext.getContentResolver(),
- Settings.Global.AIRPLANE_MODE_ON, 0) != 0) && !mIsVoWifiAvailable &&
- !mIsViWifiAvailable) {
- logger.print("Airplane mode was on and no vowifi and viwifi." +
- " Don't need publish. Stack will unpublish");
- return;
- }
+ synchronized private void onFeatureCapabilityChangedInternal(int networkType,
+ MmTelFeature.MmTelCapabilities capabilities) {
+ boolean oldIsVolteAvailable = mIsVolteAvailable;
+ boolean oldIsVtAvailable = mIsVtAvailable;
+ boolean oldIsVoWifiAvailable = mIsVoWifiAvailable;
+ boolean oldIsViWifiAvailable = mIsViWifiAvailable;
+
+ mIsVolteAvailable = (networkType == AccessNetworkConstants.TRANSPORT_TYPE_WWAN) &&
+ capabilities.isCapable(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE);
+
+ mIsVoWifiAvailable = (networkType == AccessNetworkConstants.TRANSPORT_TYPE_WLAN) &&
+ capabilities.isCapable(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE);
+
+ mIsVtAvailable = (networkType == AccessNetworkConstants.TRANSPORT_TYPE_WWAN) &&
+ capabilities.isCapable(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO);
+
+ mIsViWifiAvailable = (networkType == AccessNetworkConstants.TRANSPORT_TYPE_WLAN) &&
+ capabilities.isCapable(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO);
+
+ logger.print("mIsVolteAvailable=" + mIsVolteAvailable +
+ " mIsVoWifiAvailable=" + mIsVoWifiAvailable +
+ " mIsVtAvailable=" + mIsVtAvailable +
+ " mIsViWifiAvailable=" + mIsViWifiAvailable +
+ " oldIsVolteAvailable=" + oldIsVolteAvailable +
+ " oldIsVoWifiAvailable=" + oldIsVoWifiAvailable +
+ " oldIsVtAvailable=" + oldIsVtAvailable +
+ " oldIsViWifiAvailable=" + oldIsViWifiAvailable);
+
+ if(oldIsVolteAvailable != mIsVolteAvailable ||
+ oldIsVtAvailable != mIsVtAvailable ||
+ oldIsVoWifiAvailable != mIsVoWifiAvailable ||
+ oldIsViWifiAvailable != mIsViWifiAvailable) {
+ if(mGotTriggerFromStack) {
+ if((Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.AIRPLANE_MODE_ON, 0) != 0) && !mIsVoWifiAvailable &&
+ !mIsViWifiAvailable) {
+ logger.print("Airplane mode was on and no vowifi and viwifi." +
+ " Don't need publish. Stack will unpublish");
+ return;
+ }
- if(isOnIWLAN()) {
- // will check duplicated PUBLISH in requestPublication by invokePublish
- invokePublish(PresencePublication.PublishType.
- PRES_PUBLISH_TRIGGER_FEATURE_AVAILABILITY_CHANGED);
- }
- } else {
- mHasCachedTrigger = true;
+ if(isOnIWLAN()) {
+ // will check duplicated PUBLISH in requestPublication by invokePublish
+ invokePublish(PresencePublication.PublishType.
+ PRES_PUBLISH_TRIGGER_FEATURE_AVAILABILITY_CHANGED);
}
+ } else {
+ mHasCachedTrigger = true;
}
}
}
diff --git a/rcs/rcsservice/src/com/android/service/ims/presence/PresencePublishTask.java b/rcs/rcsservice/src/com/android/service/ims/presence/PresencePublishTask.java
index 361488e..73ae4ca 100644
--- a/rcs/rcsservice/src/com/android/service/ims/presence/PresencePublishTask.java
+++ b/rcs/rcsservice/src/com/android/service/ims/presence/PresencePublishTask.java
@@ -28,27 +28,9 @@
package com.android.service.ims.presence;
-import java.util.Set;
-import java.util.HashMap;
-import java.util.List;
-import java.util.ArrayList;
-import android.content.Context;
-import android.content.Intent;
-import android.app.PendingIntent;
-import android.content.IntentFilter;
-import android.os.RemoteException;
-import android.app.AlarmManager;
-import android.os.SystemClock;
-
-import com.android.ims.internal.uce.presence.PresCmdStatus;
-
import com.android.ims.internal.Logger;
-import com.android.ims.RcsManager.ResultCode;
-import com.android.ims.RcsPresenceInfo;
import com.android.ims.IRcsPresenceListener;
-import com.android.service.ims.TaskManager;
-
/**
* PresencePublishTask
*/
diff --git a/rcs/rcsservice/src/com/android/service/ims/presence/PresenceSubscriber.java b/rcs/rcsservice/src/com/android/service/ims/presence/PresenceSubscriber.java
index daa2636..ccd4cae 100644
--- a/rcs/rcsservice/src/com/android/service/ims/presence/PresenceSubscriber.java
+++ b/rcs/rcsservice/src/com/android/service/ims/presence/PresenceSubscriber.java
@@ -28,51 +28,33 @@
package com.android.service.ims.presence;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Timer;
-import java.util.TimerTask;
-import java.util.concurrent.Semaphore;
-import android.content.ContentValues;
-import android.text.TextUtils;
-
-import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
-import android.content.IntentFilter;
-import com.android.internal.telephony.TelephonyIntents;
-import android.os.HandlerThread;
-import android.os.RemoteException;
import android.telephony.TelephonyManager;
-import android.database.Cursor;
-
-import java.lang.String;
-import android.content.Context;
-import android.util.Log;
-
-import com.android.ims.internal.uce.presence.PresSipResponse;
-import com.android.ims.internal.uce.common.StatusCode;
-import com.android.ims.internal.uce.common.StatusCode;
-import com.android.ims.internal.uce.presence.PresSubscriptionState;
-import com.android.ims.internal.uce.presence.PresCmdStatus;
-import com.android.ims.internal.uce.presence.PresResInfo;
-import com.android.ims.internal.uce.presence.PresRlmiInfo;
-import com.android.ims.internal.uce.presence.PresTupleInfo;
+import android.text.TextUtils;
-import com.android.ims.RcsPresenceInfo;
-import com.android.ims.RcsPresence;
import com.android.ims.IRcsPresenceListener;
import com.android.ims.RcsManager.ResultCode;
+import com.android.ims.RcsPresence;
import com.android.ims.RcsPresence.PublishState;
-
-import com.android.ims.internal.Logger;
+import com.android.ims.RcsPresenceInfo;
import com.android.ims.internal.ContactNumberUtils;
-import com.android.service.ims.TaskManager;
-import com.android.service.ims.Task;
+import com.android.ims.internal.Logger;
+import com.android.ims.internal.uce.presence.PresCmdStatus;
+import com.android.ims.internal.uce.presence.PresResInfo;
+import com.android.ims.internal.uce.presence.PresRlmiInfo;
+import com.android.ims.internal.uce.presence.PresSipResponse;
+import com.android.ims.internal.uce.presence.PresSubscriptionState;
+import com.android.ims.internal.uce.presence.PresTupleInfo;
+import com.android.service.ims.RcsSettingUtils;
import com.android.service.ims.RcsStackAdaptor;
import com.android.service.ims.RcsUtils;
-import com.android.service.ims.RcsSettingUtils;
+import com.android.service.ims.Task;
+import com.android.service.ims.TaskManager;
+
+import java.util.ArrayList;
+import java.util.List;
public class PresenceSubscriber extends PresenceBase{
/*
diff --git a/rcs/rcsservice/src/com/android/service/ims/presence/PresenceTask.java b/rcs/rcsservice/src/com/android/service/ims/presence/PresenceTask.java
index 8ff74cd..ed8afdf 100644
--- a/rcs/rcsservice/src/com/android/service/ims/presence/PresenceTask.java
+++ b/rcs/rcsservice/src/com/android/service/ims/presence/PresenceTask.java
@@ -28,21 +28,10 @@
package com.android.service.ims.presence;
-import java.util.Set;
-import java.util.HashMap;
-import java.util.List;
-import java.util.ArrayList;
-import android.os.RemoteException;
-
-import com.android.ims.internal.uce.presence.PresCmdStatus;
-
-import com.android.ims.internal.Logger;
-import com.android.ims.RcsManager.ResultCode;
-import com.android.ims.RcsPresenceInfo;
import com.android.ims.IRcsPresenceListener;
-
-import com.android.service.ims.Task;
+import com.android.ims.internal.Logger;
import com.android.service.ims.RcsUtils;
+import com.android.service.ims.Task;
/**
* PresenceTask
diff --git a/rcs/rcsservice/src/com/android/service/ims/presence/StackListener.java b/rcs/rcsservice/src/com/android/service/ims/presence/StackListener.java
index 9ca82fc..ae1d415 100644
--- a/rcs/rcsservice/src/com/android/service/ims/presence/StackListener.java
+++ b/rcs/rcsservice/src/com/android/service/ims/presence/StackListener.java
@@ -28,22 +28,18 @@
package com.android.service.ims.presence;
-import java.util.ArrayList;
-import java.util.List;
-
-import android.content.ServiceConnection;
-import android.annotation.SuppressLint;
-import android.content.Intent;
import android.content.Context;
-import android.content.SharedPreferences;
+import android.content.Intent;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
+import android.os.Parcel;
import android.os.RemoteException;
-import android.text.TextUtils;
import android.util.Log;
-import android.os.Parcel;
+import com.android.ims.RcsManager;
+import com.android.ims.internal.Logger;
+import com.android.ims.internal.uce.common.StatusCode;
import com.android.ims.internal.uce.presence.IPresenceListener;
import com.android.ims.internal.uce.presence.PresCmdId;
import com.android.ims.internal.uce.presence.PresCmdStatus;
@@ -52,18 +48,6 @@ import com.android.ims.internal.uce.presence.PresResInfo;
import com.android.ims.internal.uce.presence.PresRlmiInfo;
import com.android.ims.internal.uce.presence.PresSipResponse;
import com.android.ims.internal.uce.presence.PresTupleInfo;
-import com.android.ims.internal.uce.common.StatusCode;
-import com.android.ims.internal.uce.common.StatusCode;
-
-import com.android.ims.RcsManager;
-import com.android.ims.RcsManager.ResultCode;
-import com.android.ims.RcsPresence;
-import com.android.ims.RcsPresenceInfo;
-import com.android.ims.IRcsPresenceListener;
-
-import com.android.ims.internal.Logger;
-import com.android.service.ims.TaskManager;
-import com.android.service.ims.Task;
import com.android.service.ims.RcsStackAdaptor;
public class StackListener extends Handler{