主题 : 【已解决】tiny4412 android4.2.2 如何切换个CDMA通道! 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 83713
精华: 0
发帖: 38
金钱: 195 两
威望: 39 点
贡献值: 0 点
综合积分: 76 分
注册时间: 2012-12-11
最后登录: 2020-04-15
楼主  发表于: 2013-11-18 17:42

 【已解决】tiny4412 android4.2.2 如何切换个CDMA通道!

前段时间将tiny4412, android4.2.2使用深圳信可通讯的WCDMA的模块MW100 的ril,现已将短信,彩信,语音通话。数据连接,基本都已经基本可以正常使用,感谢kasim版主的帮助。今天想试着调试一下EVDO 的模块,在调试的过程中ril已经基本跑起来,但是发现打电话的过程中总是报"进程com.android.phone 已停止"通过查资料,据说这个是走的分支不正确,LOG如附件。请问高手们怎么走CDMA分支。我已经将RILConstants.java中的网络模式改为
复制代码
  1. ......
  2. int NETWORK_MODE_WCDMA_PREF     = 0; /* GSM/WCDMA (WCDMA preferred) */
  3. int NETWORK_MODE_GSM_ONLY       = 1; /* GSM only */
  4. int NETWORK_MODE_WCDMA_ONLY     = 2; /* WCDMA only */
  5. int NETWORK_MODE_GSM_UMTS       = 3; /* GSM/WCDMA (auto mode, according to PRL)
  6.                                             AVAILABLE Application Settings menu*/
  7. int NETWORK_MODE_CDMA           = 4; /* CDMA and EvDo (auto mode, according to PRL)
  8. int NETWORK_MODE_CDMA_NO_EVDO   = 5; /* CDMA only */
  9. int NETWORK_MODE_EVDO_NO_CDMA   = 6; /* EvDo only */
  10. int NETWORK_MODE_GLOBAL         = 7; /* GSM/WCDMA, CDMA, and EvDo (auto mode, according to PRL)
  11.                                             AVAILABLE Application Settings menu*/
  12. ......
  13. int PREFERRED_NETWORK_MODE      = NETWORK_MODE_CDMA;
  14. ......

请问还需要改什么地方!欢迎回帖!谢谢!

————————————————————————————华丽的分割线———————————————————————————————

经过几天的折腾终于找到原因了,是友善把build.prop中的属性写死了。总结一下tiny4412走CDMA通道的方法如下:
1.
将RILConstants.java中
int PREFERRED_NETWORK_MODE      = NETWORK_MODE_WCDMA_PREF;
改为
int PREFERRED_NETWORK_MODE      = NETWORK_MODE_CDMA;
2.
将system.prop中
ro.telephony.default_network=0
改为
ro.telephony.default_network=4
[ 此帖被devsha在2013-11-29 14:22重新编辑 ]
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2013-11-18 22:51
"进程com.android.phone 已停止"这样的错误需要根据logcat的输出来分析
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 94357
精华: 0
发帖: 62
金钱: 320 两
威望: 64 点
贡献值: 0 点
综合积分: 124 分
注册时间: 2013-07-15
最后登录: 2017-09-13
2楼  发表于: 2013-11-19 13:41
   支持一楼
级别: 荣誉会员
UID: 34761
精华: 0
发帖: 1348
金钱: 6835 两
威望: 1367 点
贡献值: 0 点
综合积分: 2696 分
注册时间: 2010-12-21
最后登录: 2017-06-02
3楼  发表于: 2013-11-19 22:30
楼主能否share一下 MW100 的ril 和资料
级别: 新手上路
UID: 83713
精华: 0
发帖: 38
金钱: 195 两
威望: 39 点
贡献值: 0 点
综合积分: 76 分
注册时间: 2012-12-11
最后登录: 2020-04-15
4楼  发表于: 2013-11-20 10:52

 回 1楼(kasim) 的帖子

LOG如附件所示。请帮忙分析一下!有什么问题请指教!
附件: logcat.rar (33 K) 下载次数:6
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
5楼  发表于: 2013-11-20 12:00

 回 4楼(devsha) 的帖子

这是你log里的相关信息

E/AndroidRuntime( 1287): FATAL EXCEPTION: main
E/AndroidRuntime( 1287): java.lang.NullPointerException
E/AndroidRuntime( 1287):     at com.android.internal.telephony.gsm.GSMPhone.getRingingCall(GSMPhone.java:474)
E/AndroidRuntime( 1287):     at com.android.internal.telephony.gsm.GSMPhone.getRingingCall(GSMPhone.java:93)
E/AndroidRuntime( 1287):     at com.android.internal.telephony.DefaultPhoneNotifier.notifyPhoneState(DefaultPhoneNotifier.java:49)
E/AndroidRuntime( 1287):     at com.android.internal.telephony.gsm.GSMPhone.notifyPhoneStateChanged(GSMPhone.java:357)
E/AndroidRuntime( 1287):     at com.android.internal.telephony.gsm.GsmCallTracker.updatePhoneState(GsmCallTracker.java:408)
E/AndroidRuntime( 1287):     at com.android.internal.telephony.gsm.GsmCallTracker.handlePollCalls(GsmCallTracker.java:618)
E/AndroidRuntime( 1287):     at com.android.internal.telephony.gsm.GsmCallTracker.handleMessage(GsmCallTracker.java:847)
...
W/ActivityManager(  365): Process com.android.phone has crashed too many times: killing!

看起来是Null指针exception,你通常所要做的就是找出在GSMPhone.java 474行出现NULL指针的原因。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 83713
精华: 0
发帖: 38
金钱: 195 两
威望: 39 点
贡献值: 0 点
综合积分: 76 分
注册时间: 2012-12-11
最后登录: 2020-04-15
6楼  发表于: 2013-11-21 16:35

 回 5楼(kasim) 的帖子

我今天仔细用我的LOG 与其他EVDO的对比了一下发现我的走的还是WCDMA的分支

正常的LOG
I/PHONE   (  379): Creating CDMAPhone
....
D/RILJ    (  542): [0002]> REQUEST_SET_PREFERRED_NETWORK_TYPE : 4

而我的log
I/PHONE   (  542): Creating GSMPhone
....
D/RILJ    (  542): [0002]> REQUEST_SET_PREFERRED_NETWORK_TYPE : 0

4是CDMA and EvDo ,  0是GSM/WCDMA

而且我查看系统属性也还是0;
[ro.telephony.default_network]: [0]

这样的话应该是上层还没有设置好!会不会是友善的哪一个编译脚本把网络写死了!
级别: 新手上路
UID: 12415
精华: 0
发帖: 34
金钱: 170 两
威望: 34 点
贡献值: 0 点
综合积分: 68 分
注册时间: 2010-01-06
最后登录: 2014-03-12
7楼  发表于: 2014-01-13 17:46
直接改一下配置参数也可以~~~

sqlite3 /data/data/com.android.providers.settings/databases/settings.db
update secure set value='4' where name='preferred_network_mode';
.quit
级别: 新手上路
UID: 12415
精华: 0
发帖: 34
金钱: 170 两
威望: 34 点
贡献值: 0 点
综合积分: 68 分
注册时间: 2010-01-06
最后登录: 2014-03-12
8楼  发表于: 2014-01-13 17:48
我现在遇到的是拨号的问题,android没找到apn参数,但事实上apn-conf.xml已经有了中国电信的APN参数

D/RIL     (   82): onRequest: VOICE_REGISTRATION_STATE, Local implementation,  AT cmd sent
D/RILJ    (  297): [0030]< VOICE_REGISTRATION_STATE {1, null, null, 6, -1, 2147483647, 2147483647, 0, 14136, 6, 1, 1, 1, 0}
D/CDMA    (  297): [CdmaDCT] CdmaDCT handleMessage msg={ what=270338 when=-7ms obj=android.os.AsyncResult@413870a0 }
D/CDMA    (  297): Event EVENT_RUIM_RECORDS_LOADED Received
D/CDMA    (  297): [CdmaSST] Set CDMA Roaming Indicator to: 1. mCdmaRoaming = false, isPrlLoaded = true. namMatch = false , mIsInPrl = true, mRoamingIndicator = 1, mDefaultRoamingIndicator= 1
D/CDMA    (  297): [CdmaSST] pollStateDone: oldSS=[3 home null null null  Unknown:0 CSS not supported -1 -1 RoamInd=-1 DefRoamInd=-1 EmergOnly=false] newSS=[0 home CDMA CDMA 46003  1xRTT:6 CSS not supported 6 14136 RoamInd=1 DefRoamInd=1 EmergOnly=false]
D/CDMA    (  297): [CdmaSST] updateSpnDisplay: changed sending intent showPlmn='true' plmn='CDMA'
D/CDMA    (  297): [CDMAPhone] getDataConnectionState apnType=default ret=DISCONNECTED
D/RILB    (  297): getLteOnCdmaMode=0 curVal=-1 product_type='' lteOnCdmaProductType=''
D/CDMA    (  297): [CdmaSST] getOtasp: state=3
D/RILB    (  297): getLteOnCdmaMode=0 curVal=-1 product_type='' lteOnCdmaProductType=''
D/CDMA    (  297): [CdmaSST] getOtasp: state=3
D/CDMA    (  297): [CdmaDCT] Data not possible.  No coverage: dataState = IDLE
D/CDMA    (  297): [CdmaDCT] CdmaDCT handleMessage msg={ what=270339 when=-76ms obj=simLoaded }
D/CDMA    (  297): [CdmaDCT] ***trySetupData due to simLoaded
D/RILB    (  297): getLteOnCdmaMode=0 curVal=-1 product_type='' lteOnCdmaProductType=''
D/CDMA    (  297): [CdmaSST] getOtasp: state=3
D/CDMA    (  297): [CdmaDCT] isEmergency: result=false
D/CDMA    (  297): [CdmaDCT] found free GsmDataConnection
D/CDMA    (  297): [CdmaDCT] call conn.bringUp mActiveApn=[ApnSettingV2] , 0, , , , , , , , 0, default | mms | hipri, IP, IP, true, 0
D/CDMA    (  297): [CdmaDC-1] DcInactiveState msg.what=EVENT_CONNECT.RefCount = 0
D/CDMA    (  297): [CdmaDC-1] CdmaDataConnection Connecting...
D/RILJ    (  297): [0031]> SETUP_DATA_CALL 8 0 null null null 3 IP
D/CDMA    (  297): [CdmaDCT] setState: INITING
D/CDMA    (  297): [CDMAPhone] getDataConnectionState apnType=default ret=CONNECTING
D/RILB    (  297): getLteOnCdmaMode=0 curVal=-1 product_type='' lteOnCdmaProductType=''
D/CDMA    (  297): [CdmaSST] getOtasp: state=3
D/RIL     (   82): on_request: SETUP_DATA_CALL, sState:6
D/RIL     (   82): ********RIL_VERSION = 6 **********
D/RIL     (   82): *************data[6] is IP*********
D/RIL     (   82): **********pdp_type is IP **********
D/RIL     (   82): RIL_REQUEST_SETUP_DATA_CALL: indicator:8
D/RIL     (   82): RIL_REQUEST_SETUP_DATA_CALL: apn:(null)
D/RIL     (   82): RIL_REQUEST_SETUP_DATA_CALL: auth type:3
D/RIL     (   82): --->>>setup_ppp_connection<<<---