Loading src/java/com/android/internal/telephony/Phone.java +5 −0 Original line number Diff line number Diff line Loading @@ -1904,6 +1904,11 @@ public interface Phone { */ public Phone getImsPhone(); /** * Start listening for IMS service UP/DOWN events. */ public void startMonitoringImsService(); /** * Release the local instance of the ImsPhone and disconnect from * the phone. Loading src/java/com/android/internal/telephony/PhoneBase.java +56 −41 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ import java.util.concurrent.atomic.AtomicReference; public abstract class PhoneBase extends Handler implements Phone { private static final String LOG_TAG = "PhoneBase"; private boolean mImsIntentReceiverRegistered = false; private BroadcastReceiver mImsIntentReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Loading @@ -101,6 +102,7 @@ public abstract class PhoneBase extends Handler implements Phone { } } synchronized (PhoneProxy.lockForRadioTechnologyChange) { if (intent.getAction().equals(ImsManager.ACTION_IMS_SERVICE_UP)) { mImsServiceReady = true; updateImsPhone(); Loading @@ -109,6 +111,7 @@ public abstract class PhoneBase extends Handler implements Phone { updateImsPhone(); } } } }; // Key used to read and write the saved network selection numeric value Loading Loading @@ -223,7 +226,6 @@ public abstract class PhoneBase extends Handler implements Phone { protected int mPhoneId; private final Object mImsLock = new Object(); private boolean mImsServiceReady = false; protected ImsPhone mImsPhone = null; Loading Loading @@ -434,6 +436,19 @@ public abstract class PhoneBase extends Handler implements Phone { mUiccController = UiccController.getInstance(); mUiccController.registerForIccChanged(this, EVENT_ICC_CHANGED, null); mCi.registerForSrvccStateChanged(this, EVENT_SRVCC_STATE_CHANGED, null); mCi.setOnUnsolOemHookRaw(this, EVENT_UNSOL_OEM_HOOK_RAW, null); } @Override public void startMonitoringImsService() { synchronized(PhoneProxy.lockForRadioTechnologyChange) { IntentFilter filter = new IntentFilter(); filter.addAction(ImsManager.ACTION_IMS_SERVICE_UP); filter.addAction(ImsManager.ACTION_IMS_SERVICE_DOWN); mContext.registerReceiver(mImsIntentReceiver, filter); mImsIntentReceiverRegistered = true; // Monitor IMS service - but first poll to see if already up (could miss // intent) ImsManager imsManager = ImsManager.getInstance(mContext, getPhoneId()); Loading @@ -441,19 +456,16 @@ public abstract class PhoneBase extends Handler implements Phone { mImsServiceReady = true; updateImsPhone(); } IntentFilter filter = new IntentFilter(); filter.addAction(ImsManager.ACTION_IMS_SERVICE_UP); filter.addAction(ImsManager.ACTION_IMS_SERVICE_DOWN); mContext.registerReceiver(mImsIntentReceiver, filter); mCi.registerForSrvccStateChanged(this, EVENT_SRVCC_STATE_CHANGED, null); mCi.setOnUnsolOemHookRaw(this, EVENT_UNSOL_OEM_HOOK_RAW, null); } } @Override public void dispose() { synchronized(PhoneProxy.lockForRadioTechnologyChange) { if (mImsIntentReceiverRegistered) { mContext.unregisterReceiver(mImsIntentReceiver); mImsIntentReceiverRegistered = false; } mCi.unSetOnCallRing(this); // Must cleanup all connectionS and needs to use sendMessage! mDcTracker.cleanUpAllConnections(null); Loading Loading @@ -1969,10 +1981,15 @@ public abstract class PhoneBase extends Handler implements Phone { @Override public ImsPhone relinquishOwnershipOfImsPhone() { synchronized (mImsLock) { synchronized (PhoneProxy.lockForRadioTechnologyChange) { if (mImsPhone == null) return null; if (mImsIntentReceiverRegistered) { mContext.unregisterReceiver(mImsIntentReceiver); mImsIntentReceiverRegistered = false; } ImsPhone imsPhone = mImsPhone; mImsPhone = null; Loading @@ -1985,7 +2002,7 @@ public abstract class PhoneBase extends Handler implements Phone { @Override public void acquireOwnershipOfImsPhone(ImsPhone imsPhone) { synchronized (mImsLock) { synchronized (PhoneProxy.lockForRadioTechnologyChange) { if (imsPhone == null) return; Loading @@ -2010,7 +2027,6 @@ public abstract class PhoneBase extends Handler implements Phone { } protected void updateImsPhone() { synchronized (mImsLock) { Rlog.d(LOG_TAG, "updateImsPhone" + " mImsServiceReady=" + mImsServiceReady); Loading @@ -2031,7 +2047,6 @@ public abstract class PhoneBase extends Handler implements Phone { mImsPhone = null; } } } /** * Dials a number. Loading src/java/com/android/internal/telephony/PhoneFactory.java +2 −0 Original line number Diff line number Diff line Loading @@ -151,9 +151,11 @@ public class PhoneFactory { if (phoneType == PhoneConstants.PHONE_TYPE_GSM) { phone = new GSMPhone(context, sCommandsInterfaces[i], sPhoneNotifier, i); phone.startMonitoringImsService(); } else if (phoneType == PhoneConstants.PHONE_TYPE_CDMA) { phone = new CDMALTEPhone(context, sCommandsInterfaces[i], sPhoneNotifier, i); phone.startMonitoringImsService(); } Rlog.i(LOG_TAG, "Creating Phone with type = " + phoneType + " sub = " + i); Loading src/java/com/android/internal/telephony/PhoneProxy.java +4 −2 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ import com.android.internal.telephony.gsm.GSMPhone; import com.android.internal.telephony.imsphone.ImsPhone; import com.android.internal.telephony.test.SimulatedRadioControl; import com.android.internal.telephony.cdma.CDMALTEPhone; import com.android.internal.telephony.RadioCapability; import com.android.internal.telephony.uicc.IccCardProxy; import com.android.internal.telephony.uicc.IccFileHandler; import com.android.internal.telephony.uicc.IsimRecords; Loading @@ -50,7 +49,6 @@ import com.android.internal.telephony.uicc.UsimServiceTable; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.List; import java.util.Set; import com.android.internal.telephony.dataconnection.DctController; Loading Loading @@ -301,6 +299,7 @@ public class PhoneProxy extends Handler implements Phone { if (imsPhone != null) { mActivePhone.acquireOwnershipOfImsPhone(imsPhone); } mActivePhone.startMonitoringImsService(); mActivePhone.registerForSimRecordsLoaded(this, EVENT_SIM_RECORDS_LOADED, null); } Loading Loading @@ -1459,6 +1458,9 @@ public class PhoneProxy extends Handler implements Phone { @Override public ImsPhone relinquishOwnershipOfImsPhone() { return null; } @Override public void startMonitoringImsService() {} @Override public void acquireOwnershipOfImsPhone(ImsPhone imsPhone) { } Loading Loading
src/java/com/android/internal/telephony/Phone.java +5 −0 Original line number Diff line number Diff line Loading @@ -1904,6 +1904,11 @@ public interface Phone { */ public Phone getImsPhone(); /** * Start listening for IMS service UP/DOWN events. */ public void startMonitoringImsService(); /** * Release the local instance of the ImsPhone and disconnect from * the phone. Loading
src/java/com/android/internal/telephony/PhoneBase.java +56 −41 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ import java.util.concurrent.atomic.AtomicReference; public abstract class PhoneBase extends Handler implements Phone { private static final String LOG_TAG = "PhoneBase"; private boolean mImsIntentReceiverRegistered = false; private BroadcastReceiver mImsIntentReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Loading @@ -101,6 +102,7 @@ public abstract class PhoneBase extends Handler implements Phone { } } synchronized (PhoneProxy.lockForRadioTechnologyChange) { if (intent.getAction().equals(ImsManager.ACTION_IMS_SERVICE_UP)) { mImsServiceReady = true; updateImsPhone(); Loading @@ -109,6 +111,7 @@ public abstract class PhoneBase extends Handler implements Phone { updateImsPhone(); } } } }; // Key used to read and write the saved network selection numeric value Loading Loading @@ -223,7 +226,6 @@ public abstract class PhoneBase extends Handler implements Phone { protected int mPhoneId; private final Object mImsLock = new Object(); private boolean mImsServiceReady = false; protected ImsPhone mImsPhone = null; Loading Loading @@ -434,6 +436,19 @@ public abstract class PhoneBase extends Handler implements Phone { mUiccController = UiccController.getInstance(); mUiccController.registerForIccChanged(this, EVENT_ICC_CHANGED, null); mCi.registerForSrvccStateChanged(this, EVENT_SRVCC_STATE_CHANGED, null); mCi.setOnUnsolOemHookRaw(this, EVENT_UNSOL_OEM_HOOK_RAW, null); } @Override public void startMonitoringImsService() { synchronized(PhoneProxy.lockForRadioTechnologyChange) { IntentFilter filter = new IntentFilter(); filter.addAction(ImsManager.ACTION_IMS_SERVICE_UP); filter.addAction(ImsManager.ACTION_IMS_SERVICE_DOWN); mContext.registerReceiver(mImsIntentReceiver, filter); mImsIntentReceiverRegistered = true; // Monitor IMS service - but first poll to see if already up (could miss // intent) ImsManager imsManager = ImsManager.getInstance(mContext, getPhoneId()); Loading @@ -441,19 +456,16 @@ public abstract class PhoneBase extends Handler implements Phone { mImsServiceReady = true; updateImsPhone(); } IntentFilter filter = new IntentFilter(); filter.addAction(ImsManager.ACTION_IMS_SERVICE_UP); filter.addAction(ImsManager.ACTION_IMS_SERVICE_DOWN); mContext.registerReceiver(mImsIntentReceiver, filter); mCi.registerForSrvccStateChanged(this, EVENT_SRVCC_STATE_CHANGED, null); mCi.setOnUnsolOemHookRaw(this, EVENT_UNSOL_OEM_HOOK_RAW, null); } } @Override public void dispose() { synchronized(PhoneProxy.lockForRadioTechnologyChange) { if (mImsIntentReceiverRegistered) { mContext.unregisterReceiver(mImsIntentReceiver); mImsIntentReceiverRegistered = false; } mCi.unSetOnCallRing(this); // Must cleanup all connectionS and needs to use sendMessage! mDcTracker.cleanUpAllConnections(null); Loading Loading @@ -1969,10 +1981,15 @@ public abstract class PhoneBase extends Handler implements Phone { @Override public ImsPhone relinquishOwnershipOfImsPhone() { synchronized (mImsLock) { synchronized (PhoneProxy.lockForRadioTechnologyChange) { if (mImsPhone == null) return null; if (mImsIntentReceiverRegistered) { mContext.unregisterReceiver(mImsIntentReceiver); mImsIntentReceiverRegistered = false; } ImsPhone imsPhone = mImsPhone; mImsPhone = null; Loading @@ -1985,7 +2002,7 @@ public abstract class PhoneBase extends Handler implements Phone { @Override public void acquireOwnershipOfImsPhone(ImsPhone imsPhone) { synchronized (mImsLock) { synchronized (PhoneProxy.lockForRadioTechnologyChange) { if (imsPhone == null) return; Loading @@ -2010,7 +2027,6 @@ public abstract class PhoneBase extends Handler implements Phone { } protected void updateImsPhone() { synchronized (mImsLock) { Rlog.d(LOG_TAG, "updateImsPhone" + " mImsServiceReady=" + mImsServiceReady); Loading @@ -2031,7 +2047,6 @@ public abstract class PhoneBase extends Handler implements Phone { mImsPhone = null; } } } /** * Dials a number. Loading
src/java/com/android/internal/telephony/PhoneFactory.java +2 −0 Original line number Diff line number Diff line Loading @@ -151,9 +151,11 @@ public class PhoneFactory { if (phoneType == PhoneConstants.PHONE_TYPE_GSM) { phone = new GSMPhone(context, sCommandsInterfaces[i], sPhoneNotifier, i); phone.startMonitoringImsService(); } else if (phoneType == PhoneConstants.PHONE_TYPE_CDMA) { phone = new CDMALTEPhone(context, sCommandsInterfaces[i], sPhoneNotifier, i); phone.startMonitoringImsService(); } Rlog.i(LOG_TAG, "Creating Phone with type = " + phoneType + " sub = " + i); Loading
src/java/com/android/internal/telephony/PhoneProxy.java +4 −2 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ import com.android.internal.telephony.gsm.GSMPhone; import com.android.internal.telephony.imsphone.ImsPhone; import com.android.internal.telephony.test.SimulatedRadioControl; import com.android.internal.telephony.cdma.CDMALTEPhone; import com.android.internal.telephony.RadioCapability; import com.android.internal.telephony.uicc.IccCardProxy; import com.android.internal.telephony.uicc.IccFileHandler; import com.android.internal.telephony.uicc.IsimRecords; Loading @@ -50,7 +49,6 @@ import com.android.internal.telephony.uicc.UsimServiceTable; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.List; import java.util.Set; import com.android.internal.telephony.dataconnection.DctController; Loading Loading @@ -301,6 +299,7 @@ public class PhoneProxy extends Handler implements Phone { if (imsPhone != null) { mActivePhone.acquireOwnershipOfImsPhone(imsPhone); } mActivePhone.startMonitoringImsService(); mActivePhone.registerForSimRecordsLoaded(this, EVENT_SIM_RECORDS_LOADED, null); } Loading Loading @@ -1459,6 +1458,9 @@ public class PhoneProxy extends Handler implements Phone { @Override public ImsPhone relinquishOwnershipOfImsPhone() { return null; } @Override public void startMonitoringImsService() {} @Override public void acquireOwnershipOfImsPhone(ImsPhone imsPhone) { } Loading