Android从1.6版本开始支持CDMA,cdma-import分支由Teleca CDMA团队开发,最后合并到主干。浏览 http://android.git.kernel.org, 在heads可以查看cdma-import的代码变化,从ril层到上层的应用程序。
RIL
多了下面的请求号:
RIL_REQUEST_CDMA_SET_SUBSCRIPTION
RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE
RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE
RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE
RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE
RIL_REQUEST_CDMA_FLASH
RIL_REQUEST_CDMA_BURST_DTMF
RIL_REQUEST_CDMA_VALIDATE_AND_WRITE_AKEY
RIL_REQUEST_CDMA_SEND_SMS
RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE
RIL_REQUEST_CDMA_GET_BROADCAST_SMS_CONFIG
RIL_REQUEST_CDMA_SET_BROADCAST_SMS_CONFIG
RIL_REQUEST_CDMA_SMS_BROADCAST_ACTIVATION
RIL_REQUEST_CDMA_SUBSCRIPTION
RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM
RIL_REQUEST_CDMA_DELETE_SMS_ON_RUIM
自动上报:
RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL
RIL_UNSOL_CDMA_CALL_WAITING
RIL_UNSOL_CDMA_OTA_PROVISION_STATUS
RIL_UNSOL_CDMA_INFO_REC
RIL_UNSOL_RESPONSE_CDMA_NEW_SMS
主要工作在 hardware/ril/reference-cdma-sms 实现cdma 短信的编解码,模组特殊AT处理。
Telephony Framework
在 telephony framework层,该启动 CDMAPhone 还是 GSMPhone ?
frameworks/base/telephony/java/com/android/internal/telephony/PhoneFactory.java 里的makeDefaultPhone函数:
//Get preferredNetworkMode from Settings.System
int networkMode = Settings.Secure.getInt(context.getContentResolver(),
Settings.Secure.PREFERRED_NETWORK_MODE, preferredNetworkMode);
如果要设置成EvDo网络,则需要在init.rc配置文件里添加:
setprop ro.telephony.default_network 6
RILConstants.java有对应的值。
如果设置错了,怎么办?在类PhoneProxy中处理消息 EVENT_RADIO_TECHNOLOGY_CHANGE,进行纠正,选择是使用GSM还是CDMA,给PhoneApp发送一个Intent通知radio technology变化。
APP
应用不需要做太大的修改,其中设置应用添加与中国电信CDMA特性相关的,比如接入点名称:
中国电信互联星空设置 ctwap
中国电信互联网设置 ctnet
这些在国外手机是不需要分什么wap、net的,但中国电信CDMA的天翼视讯、天翼阅读仅支持ctwap接入。
Leave a Reply