分享

Android(OPhone) 学习笔记 - 手机信息管理

 waston 2010-05-07

Android(OPhone) 学习笔记 - 手机信息管理

在手机的运行过程中,操作系统一直都在与底层的外设打交道,其中包括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为未知,范围为00xffff

int getLac ()获得lac id-1为未知,范围为00xffff

 void setLacAndCid (int lac, int cid) 设置当前celllacid

 void setStateInvalid () 设置当前状态无效,cidlacid都为-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位国家码,23位网络码

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.

实现效果如图:


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多