转载请注明出处:http://blog.youkuaiyun.com/aaa111/article/details/73872220
文前
正文
/*** Returns the IMS Registration Status* @hide*/public boolean isImsRegistered() {try {ITelephony telephony = getITelephony();if (telephony == null)return false;return telephony.isImsRegistered();} catch (RemoteException ex) {return false;} catch (NullPointerException ex) {return false;}}
/** * Returns the IMS Registration Status * using subId * @hide */ public boolean isImsRegisteredForSubscriber(int subId) { try { ITelephony telephony = getITelephony(); if (telephony == null) return false; return telephony.isImsRegisteredForSubscriber(subId); } catch (RemoteException ex) { return false; } catch (NullPointerException ex) { return false; } }
/*** Returns the Status of Volte* @hide*/public boolean isVolteAvailable() {try {return getITelephony().isVolteAvailable();} catch (RemoteException ex) {return false;} catch (NullPointerException ex) {return false;}}
@Override public boolean isImsRegistered() { return mPhone.registered(); } /* * {@hide} * Returns the IMS Registration Status based on subId */ public boolean isImsRegisteredForSubscriber(int subId) { final Phone phone = getPhone(subId); if (phone != null) { return phone.isImsRegistered(); } return false; }
/* * {@hide} * Returns the IMS Registration Status */ public boolean isVolteAvailable() { return mPhone.isVolteEnabled(); }
public void setImsRegistrationState(boolean registered) { enforceModifyPermission(); mPhone.setImsRegistrationState(registered); }
/** * Set IMS registration state */ public void setImsRegistrationState(boolean registered) { }
ImsRegistered的最终取值
@Overridepublic boolean isImsRegistered() {return mImsRegistered;}public void setImsRegistered(boolean value) {mImsRegistered = value;}
@Override public boolean isVolteEnabled() { return mCT.isVolteEnabled(); }
VolteEnabled的最终取值
public boolean isVolteEnabled() { return mImsFeatureEnabled[ImsConfig.FeatureConstants.FEATURE_TYPE_VOICE_OVER_LTE]; }
Ims Registered 的更新
/*** Listen to the IMS service state change**/private ImsConnectionStateListener mImsConnectionStateListener =new ImsConnectionStateListener() {@Overridepublic void onImsConnected() {if (DBG) log("onImsConnected");mPhone.setServiceState(ServiceState.STATE_IN_SERVICE);mPhone.setImsRegistered(true);mMetrics.writeOnImsConnectionState(mPhone.getPhoneId(),ImsConnectionState.State.CONNECTED, null);}@Overridepublic void onImsDisconnected(ImsReasonInfo imsReasonInfo) {if (DBG) log("onImsDisconnected imsReasonInfo=" + imsReasonInfo);mPhone.setServiceState(ServiceState.STATE_OUT_OF_SERVICE);mPhone.setImsRegistered(false);mPhone.processDisconnectReason(imsReasonInfo);mMetrics.writeOnImsConnectionState(mPhone.getPhoneId(),ImsConnectionState.State.DISCONNECTED, imsReasonInfo);}@Overridepublic void onImsProgressing() {if (DBG) log("onImsProgressing");mPhone.setServiceState(ServiceState.STATE_OUT_OF_SERVICE);mPhone.setImsRegistered(false);mMetrics.writeOnImsConnectionState(mPhone.getPhoneId(),ImsConnectionState.State.PROGRESSING, null);}...}
VolteEnable 的更新
/** * Listen to the IMS service state change * */ private ImsConnectionStateListener mImsConnectionStateListener = new ImsConnectionStateListener() { ... @Override public void onFeatureCapabilityChanged(int serviceClass, int[] enabledFeatures, int[] disabledFeatures) { if (serviceClass == ImsServiceClass.MMTEL) { boolean tmpIsVideoCallEnabled = isVideoCallEnabled(); // Check enabledFeatures to determine capabilities. We ignore disabledFeatures. StringBuilder sb; if (DBG) { sb = new StringBuilder(120); sb.append("onFeatureCapabilityChanged: "); } for (int i = ImsConfig.FeatureConstants.FEATURE_TYPE_VOICE_OVER_LTE; i <= ImsConfig.FeatureConstants.FEATURE_TYPE_UT_OVER_WIFI && i < enabledFeatures.length; i++) { if (enabledFeatures[i] == i) { // If the feature is set to its own integer value it is enabled. if (DBG) { sb.append(mImsFeatureStrings[i]); sb.append(":true "); } mImsFeatureEnabled[i] = true; } else if (enabledFeatures[i] == ImsConfig.FeatureConstants.FEATURE_TYPE_UNKNOWN) { // FEATURE_TYPE_UNKNOWN indicates that a feature is disabled. if (DBG) { sb.append(mImsFeatureStrings[i]); sb.append(":false "); } mImsFeatureEnabled[i] = false;
/** * Called when its current IMS connection feature capability changes. */ public void onFeatureCapabilityChanged(int serviceClass, int[] enabledFeatures, int[] disabledFeatures) { // no-op }
@Override public void registrationFeatureCapabilityChanged(int serviceClass, int[] enabledFeatures, int[] disabledFeatures) { log("registrationFeatureCapabilityChanged :: serviceClass=" + serviceClass); if (mListener != null) { mListener.onFeatureCapabilityChanged(serviceClass, enabledFeatures, disabledFeatures); } }
private void setLteFeatureValues(boolean turnOn) { log("setLteFeatureValues: " + turnOn); try { ImsConfig config = getConfigInterface(); if (config != null) { config.setFeatureValue(ImsConfig.FeatureConstants.FEATURE_TYPE_VOICE_OVER_LTE, TelephonyManager.NETWORK_TYPE_LTE, turnOn ? 1 : 0, mImsConfigListener); if (isVtEnabledByPlatform(mContext)) { boolean ignoreDataEnabledChanged = getBooleanCarrierConfig(mContext, CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS); boolean enableViLte = turnOn && isVtEnabledByUser(mContext) && (ignoreDataEnabledChanged || isDataEnabled()); config.setFeatureValue(ImsConfig.FeatureConstants.FEATURE_TYPE_VIDEO_OVER_LTE, TelephonyManager.NETWORK_TYPE_LTE, enableViLte ? 1 : 0, mImsConfigListener); } } } catch (ImsException e) { loge("setLteFeatureValues: exception ", e); } }
/** * Update VoLTE config * @return whether feature is On * @throws ImsException */ private boolean updateVolteFeatureValue() throws ImsException { boolean available = isVolteEnabledByPlatform(mContext);//平台支持 boolean enabled = isEnhanced4gLteModeSettingEnabledByUser(mContext);//开关打开 boolean isNonTty = isNonTtyOrTtyOnVolteEnabled(mContext); boolean isFeatureOn = available && enabled && isNonTty; log("updateVolteFeatureValue: available = " + available + ", enabled = " + enabled + ", nonTTY = " + isNonTty); getConfigInterface().setFeatureValue( ImsConfig.FeatureConstants.FEATURE_TYPE_VOICE_OVER_LTE, TelephonyManager.NETWORK_TYPE_LTE, isFeatureOn ? ImsConfig.FeatureValueConstants.ON : ImsConfig.FeatureValueConstants.OFF, mImsConfigListener); return isFeatureOn; }
/** * Action to broadcast when ImsService is up. * Internal use only. * @hide */ public static final String ACTION_IMS_SERVICE_UP = "com.android.ims.IMS_SERVICE_UP";
3731



被折叠的 条评论
为什么被折叠?



