网络选择 | Phone | 自定义ListPreference | Handler | 切换网络的AT指令

本文介绍了如何在Android中自定义ListPreference以实现网络偏好选择,并详细讲解了如何通过AT指令进行网络模式的切换,包括3G和2G的切换。同时讨论了在设置网络模式时如何使用Handler来确保UI线程与子线程之间的异步通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

添加网络偏好选择:默认(3G优先、仅3G、仅2G)。

 

一、自定义ListPreference

android:persistent 为true时,系统会帮助我们去保存该设置,即使重启后依然能记忆之前的设置,这也是所谓的持久化 。这里将android:persistent设置为False,表明不需要让系统去做持久化,开发者系统通过自己的方式去实现持久化。例如,在此我们是通过在自定义ListPreference的执行构造函数 时,读取系统设置来决定ListPreference的选中状态。

gsm_umts_options.xml

 

UseNetModeListPreference派生于ListPreference,这个类主要实现两个功能:一是设置网络模式,二是读取系统设置的网络模式并用ListPreference显示。这里访问和设置网络模式是一个耗时的操作 ,它由Phone对象去完成。我们不希望在执行网络模式访问和设置时阻塞UI线程 ,而是希望UI线程和子线程能实现异步 ,并且在子线程(Phone对象)操作完成后给UI线程发个消息 通知,这样UI就能根据子线程的操作结果来更新界面 了 。

Handler机制就是为了实现线程间的消息通信和异步处理所产生的。

UseNetModeListPreference.java

 

二、切换网络的AT指令

查询模组的AT指令手册:

AT^DSTM Set access technology mode
AT^DDTM Set Default Run mode and Access technology

refrence_ril.c

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值