目录
各个OEM厂商定制各自Telephony功能的集成方法
此要点,优快云没有详细介绍。主要使用设计模式中的“工厂模式”用于创建GsmCdmaPhone使用到的各个子对象,如下:
frameworks/opt/telephony/src/java/com/android/internal/telephony/GsmCdmaPhone.java
public GsmCdmaPhone(Context context, CommandsInterface ci, PhoneNotifier notifier,
boolean unitTestMode, int phoneId, int precisePhoneType,
TelephonyComponentFactory telephonyComponentFactory,
ImsManagerFactory imsManagerFactory) {
...
......
//生产厂商自己的CarrierActionAgent
mCarrierActionAgent = mTelephonyComponentFactory.inject(CarrierActionAgent.class.getName())
.makeCarrierActionAgent(this);
//生产厂商自己的CarrierSignalAgent
mCarrierSignalAgent = mTelephonyComponentFactory.inject(CarrierSignalAgent.class.getName())
.makeCarrierSignalAgent(this);
//生产厂商自己的AccessNetworksManager
mAccessNetworksManager = mTelephonyComponentFactory
.inject(AccessNetworksManager.class.getName())
.makeAccessNetworksManager(this, getLooper());
//生产厂商自己的SignalStrengthController
mSignalStrengthController = mTelephonyComponentFactory.inject(
SignalStrengthController.class.getName()).makeSignalStrengthController(this);
//生产厂商自己的ServiceStateTracker
mSST = mTelephonyComponentFactory.inject(ServiceStateTracker.class.getName())
.makeServiceStateTracker(this, this.mCi);
mEmergencyNumberTracker = mTelephonyComponentFactory
.inject(EmergencyNumberTracker.class.getName()).makeEmergencyNumberTracker(
this, this.mCi);
//生产厂商自己的DeviceStateMonitor
mDeviceStateMonitor = mTelephonyComponentFactory.inject(DeviceStateMonitor.class.getName())
.makeDeviceStateMonitor(this);
// DisplayInfoController creates an OverrideNetworkTypeController, which uses
// DeviceStateMonitor so needs to be crated after it is instantiated.
mDisplayInfoController = mTelephonyComponentFactory.inject(
DisplayInfoController.class.getName()).makeDisplayInfoController(this);
//生产厂商自己的DataNetworkController
//14彻底删除老版本的数据栈DcTracker,后续DataNetworkController的解析
mDataNetworkController = mTelephonyComponentFactory.inject(
DataNetworkController.class.getName())
.makeDataNetworkController(this, getLooper());
mCarrierResolver = mTelephonyComponentFactory.inject(CarrierResolver.class.getName())
.makeCarrierResolver(this);
...
...
}
卖关子:这里并没有直接new一个对