在手机的运行过程中,操作系统一直都在与底层的外设打交道,其中包括sim卡和无线消息。在手机启动时,它是如何知道当前的sim卡是移动的还是联通的,我用的是哪个小区的基站,各个基站的信号强度和切换时间又是多少。本例介绍了使用OPhone手机和底层数据的交互,受限于模拟器,部分功能将不能得到实际数据。
一、系统设置
首先,我们需要以下的库支持:
import android.telephony.gsm.*;
import android.telephony.*;
为了可以读取系统数据,我们还需要在AndroidManifest.xml中添加下列permission:
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission
android:name="android.permission.ACCESS_COARSE_UPDATES" />
<uses-permission
android:name="android.permission.READ_PHONE_STATE" />
二、函数介绍
telephony系列库中有以下class,我们选取部分介绍,并实现功能。
1.CellLocation 小区信息
static void requestLocationUpdate () 请求位置更新,如果更新将产生广播,接收对象为注册LISTEN_CELL_LOCATION的对象,需要的permission名称为ACCESS_COARSE_LOCATION。
int getCid () 获得cell id,-1为未知,范围为0~0xffff
int getLac ()获得lac id,-1为未知,范围为0~0xffff
void setLacAndCid (int lac, int
cid) 设置当前cell和lac的id
void setStateInvalid () 设置当前状态无效,cid和lacid都为-1
在Android1.5中,还有NeighboringCellInfo的class,可以看到相邻小区的信号强度和编号。
2.ServiceState 服务状态设置
常量:
int
STATE_EMERGENCY_ONLY 仅限紧急呼叫
int
STATE_IN_SERVICE 正常工作
int
STATE_OUT_OF_SERVICE 注册失败或者无信号
int
STATE_POWER_OFF 无线关闭
方法:
String getOperatorAlphaLong () 运营商名称,最多16字符
String getOperatorAlphaShort () 运营商名称,最多8字符
String getOperatorNumeric () 运营商代码,2位国家码,2到3位网络码
boolean getRoaming () 是否漫游
int getState () 获取服务状态
public void setIsManualSelection (boolean
isManual) 设置手动选择网络
public void setOperatorName (String
longName, String shortName, String numeric)
设置运营商名称
public void setRoaming (boolean roaming) 设置漫游状态
public void setState (int state) 设置服务状态
public void setStateOff () 设置关闭状态
public void setStateOutOfService ()设置无服务
3.TelephonyManager 电话信息管理,具体可以查询android.jar。
常量
呼叫状态
数据状态
网络状态
GRPS状态
Sim卡状态
方法
呼叫、数据、卡状态
设备号,用户号,小区号,网络号
网络类型,卡类型
呼叫者id,语音信箱
三、代码编写
在TelephonyManager 的初始化中,由于它没有显示的constructor,我们需要对其进行初始化。
四、运行结果
将获取的数据转帖到textview上,在拨号的过程中,我们可以获得如下结果:
可以看到,callstate的值为1,可以查到其含义为:CALL_STATE_RINGING
由于使用的是模拟器,故网络信息显示均为空。
拨号流程可以用:
1.运行 cmd
2.连接: telnet localhost 5554
3.通话命令:gsm call 15555218135
4.短信命令:sms send 15555218135 Hello,this is a Message.
实现效果如图:
分享到:
相关推荐
Android(OPhone)学习笔记-界面设计工具
AndroidOPhone Android-OPhone-src
AndroidOPhone Android-OPhone-src
AndroidOPhone Android-OPhone-src
AndroidOPhone开发完全讲义源码Android-OPhone-src
目前大多数的手机游戏还是以J2ME平台为主,而OPhone做为一个后起之秀、一个新的手机操作系统,目前上面的软件和游戏还不是很多,但是它有一个很大的优点——也是基于JAVA语言开发。有了这个优点也就意味着所有的J2ME...
android Ophone 开发书籍的源代码
android ophone source code 4
中国移动 Android OPhone SDK (OPhone-sdk_windows-1.5.part1) 下载全部后(共6个)解压将其后缀改为.jar
Android OPhone 开发完全讲义
中国移动 Android OPhone SDK (OPhone-sdk_windows-1.5.part3) 下载全部后(共6个)解压将其后缀改为.jar
中国移动 Android OPhone SDK (OPhone-sdk_windows-1.5.part5) 下载全部后(共6个)解压将其后缀改为.jar
中国移动 Android OPhone SDK (OPhone-sdk_windows-1.5.part2) 下载全部后(共6个)解压将其后缀改为.jar
中国移动 Android OPhone SDK (OPhone-sdk_windows-1.5.part4) 下载全部后(共6个)解压将其后缀改为.jar
中国移动 Android OPhone SDK (OPhone-sdk_windows-1.5.part6) 下载全部后(共6个)解压将其后缀改为.jar
Android-Ophone开发完全讲义 源代码
Android/Ophone开发完全讲义源码,供大家分享
李宁老师书籍《Android/Ophone开发完全讲义》
Android-OPhone开发完全讲义