diff options
author | Benergy Meenan Ravuri <bravuri@codeaurora.org> | 2016-04-04 20:30:34 +0530 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2016-08-24 08:12:32 -0600 |
commit | 7d0fa830874b20844d525218ce7bd54df8334566 (patch) | |
tree | bea2fff02e7e4808ca05b60139f208fd19fc398c | |
parent | b6f78ff7167f0c1e555fb9df0074e9e0179d5ad9 (diff) | |
download | android_frameworks_opt_telephony-7d0fa830874b20844d525218ce7bd54df8334566.tar.gz android_frameworks_opt_telephony-7d0fa830874b20844d525218ce7bd54df8334566.tar.bz2 android_frameworks_opt_telephony-7d0fa830874b20844d525218ce7bd54df8334566.zip |
IMS: Update VoLTE, VoWifi icons based on IMS capabilities
Handle IMS capabilities changed indication and update
service state.
Change-Id: I54e3a51c2756c5e399432f89fb6250c5a2ae93a9
CRs-Fixed: 998552
4 files changed, 52 insertions, 1 deletions
diff --git a/src/java/com/android/internal/telephony/Phone.java b/src/java/com/android/internal/telephony/Phone.java index 0277a45a6..81ab185b9 100644 --- a/src/java/com/android/internal/telephony/Phone.java +++ b/src/java/com/android/internal/telephony/Phone.java @@ -3235,6 +3235,20 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { } /** + * Determines if video wifi calling enabled for the phone + * + * @return {@code true} if video wifi calling is enabled, {@code false} otherwise. + */ + public boolean isVideoWifiCallingEnabled() { + Phone imsPhone = mImsPhone; + if ((imsPhone != null) + && (imsPhone.getServiceState().getState() == ServiceState.STATE_IN_SERVICE)) { + return imsPhone.isVideoWifiCallingEnabled(); + } + return false; + } + + /** * Returns the status of Link Capacity Estimation (LCE) service. */ public int getLceStatus() { diff --git a/src/java/com/android/internal/telephony/ServiceStateTracker.java b/src/java/com/android/internal/telephony/ServiceStateTracker.java index 20bfeec03..5f7478dd0 100644 --- a/src/java/com/android/internal/telephony/ServiceStateTracker.java +++ b/src/java/com/android/internal/telephony/ServiceStateTracker.java @@ -1184,6 +1184,7 @@ public class ServiceStateTracker extends Handler { case EVENT_IMS_CAPABILITY_CHANGED: if (DBG) log("EVENT_IMS_CAPABILITY_CHANGED"); updateSpnDisplay(); + updateRilImsRadioTechnology(); break; //CDMA @@ -2421,6 +2422,18 @@ public class ServiceStateTracker extends Handler { } } + private void updateRilImsRadioTechnology() { + int imsRadioTechnology = mPhone.getImsPhone() != null ? + mPhone.getImsPhone().getServiceState().getRilImsRadioTechnology() : + ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN; + if (imsRadioTechnology != mSS.getRilImsRadioTechnology()) { + Rlog.i(LOG_TAG, "updateRilImsRadioTechnology : Old ims RAT: " + + mSS.getRilImsRadioTechnology() + " new ims RAT: " + imsRadioTechnology); + mSS.setRilImsRadioTechnology(imsRadioTechnology); + mPhone.notifyServiceStateChanged(mSS); + } + } + /** * A complete "service state" from our perspective is * composed of a handful of separate requests to the radio. @@ -2595,6 +2608,8 @@ public class ServiceStateTracker extends Handler { } } + // Ims call capable rat will be filled as part of service state changed. + mNewSS.setRilImsRadioTechnology(mSS.getRilImsRadioTechnology()); // swap mSS and mNewSS to put new state in mSS ServiceState tss = mSS; mSS = mNewSS; @@ -2819,6 +2834,8 @@ public class ServiceStateTracker extends Handler { mNewSS.getVoiceRegState(), mNewSS.getDataRegState()); } + // Ims call capable rat will be filled as part of service state changed. + mNewSS.setRilImsRadioTechnology(mSS.getRilImsRadioTechnology()); ServiceState tss; tss = mSS; mSS = mNewSS; diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhone.java b/src/java/com/android/internal/telephony/imsphone/ImsPhone.java index 7190d3a95..3911f9715 100644 --- a/src/java/com/android/internal/telephony/imsphone/ImsPhone.java +++ b/src/java/com/android/internal/telephony/imsphone/ImsPhone.java @@ -1431,6 +1431,10 @@ public class ImsPhone extends ImsPhoneBase { return mCT.isVideoCallEnabled(); } + public boolean isVideoWifiCallingEnabled() { + return mCT.isVideoWifiCallingEnabled(); + } + @Override public Phone getDefaultPhone() { return mDefaultPhone; diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java index 317e372cf..efb984829 100644 --- a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java +++ b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java @@ -1904,7 +1904,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { for (ImsPhoneConnection connection : mConnections) { connection.updateWifiState(); } - + mPhone.getServiceState().setRilImsRadioTechnology(getRilImsRadioTechnology()); mPhone.onFeatureCapabilityChanged(); mEventLog.writeOnImsCapabilities(mImsFeatureEnabled); @@ -2163,6 +2163,22 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall { || mImsFeatureEnabled[ImsConfig.FeatureConstants.FEATURE_TYPE_VIDEO_OVER_WIFI]); } + public boolean isVideoWifiCallingEnabled() { + return mImsFeatureEnabled[ImsConfig.FeatureConstants.FEATURE_TYPE_VIDEO_OVER_WIFI]; + } + + private int getRilImsRadioTechnology() { + int imsRadioTechnology = ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN; + if (mImsFeatureEnabled[ImsConfig.FeatureConstants.FEATURE_TYPE_VOICE_OVER_LTE] + || mImsFeatureEnabled[ImsConfig.FeatureConstants.FEATURE_TYPE_VIDEO_OVER_LTE]) { + imsRadioTechnology = ServiceState.RIL_RADIO_TECHNOLOGY_LTE; + } else if (mImsFeatureEnabled[ImsConfig.FeatureConstants.FEATURE_TYPE_VOICE_OVER_WIFI] + || mImsFeatureEnabled[ImsConfig.FeatureConstants.FEATURE_TYPE_VIDEO_OVER_WIFI]) { + imsRadioTechnology = ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN; + } + return imsRadioTechnology; + } + @Override public PhoneConstants.State getState() { return mState; |