免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 各类编程 > GSM SMS移植到Android平台(2)

GSM SMS移植到Android平台(2)

时间:2012-06-05 18:02来源:未知 整理:寂涯网络 点击:



如PDU字符串:002008818169329646F10009119
02232003l00044F60597D,将其字段进行分解,如表4
所示。
DCS为0x09,表示使用UCS2字符集,当为0x00
时,使用GSM 8一bit编码方案。如“hellol”的GSM 8一
bit字节的编码为:E8329BFDOE01。
ScTS字段的意思是:发送时间为2011年09月
22日22 s 27 l 21,00时区

Deliver—PDU示例
UD字段对于中文采用UCS2编码,对英文字符
则采用8 bit编码。其他字段参考前面所述,在这里不
再赘述。
3具体移植过程
目前,关于GSM SMS编解码已经有实现,代码已
经部分开放。在GSM SMS具体移植过程中,只需调用
相关功能函数接口即可。本文具体移植环境是在
Android 2.2操作系统上,移植过程中使用的3G无线
通讯模块为CDMA EvDo模组,模组使用的短信格式
是text模式。
3.1 SMS Send功能移植
在Android GSM Phone框架下,Android
telephony framework层通过Socket接口传送给RIL
层的短信内容采用的是GSM PDU字符串形式
(Submit—PDU),而CDMA EvDo模组目前并不支持
PDU编码的信息对此可以有两种选择:①修改
framework层,把下发给RIL的信息改为text mode
的信息;②修改RIL,把PDU MODE的信息还原成
text mode的内容再发送。考虑到Android framework
层源代码对字符串的处理比较复杂,加上修改
framework层会导致很多问题的出现,比如对strlen、
asprintf函数调用等。在实际开发中本文采用了第2
种方案。
3.1.1 SMS Send相关AT命令介绍
在短信发送功能实现上涉及的AT命令是选择短
信参数命令‘HSMSSS和短信发送命令‘HCMGS。
在短信发送之前须先设置短信参数。具体说明如下:
短息参数设置命令语法结构[6]为:‘HSMSSS=
<ack>,<prt>,<fmt>,<pry>。<ack>字段的
意思是是否需要短信状态报告(o一不需要短息状态报
告,1一需要短信状态报告),实际开发中该字段设置为
0。<prt>为短信优先级字段,<prv>为保密级别字
段,这两个字段都采用缺省处理,设置为0。<fmt>字
段为编码方式字段,当发送英文短信时,该字段设置为
1(GSM 7 bit编码)‘当发送中文短信时该字段需设置
为6(UCs2编码)。
短信的发送分两步完成[6]。首先下发‘HCMGS
=<da>以(CR)结束;然后下发消息内容以<ctrl—Z
>结束。其中<da>字段为接收发号码。<ctrl—Z>标
识一条短信的结束,编码方式为非UCS2方式下字符
为’0xlA’,编码方式为Ucs2方式下字符为,
0x001A’。实际开发中上述两步是姆用RIL中at
send—command—sins()函数一并处理的。
3.1.2具体解码流程
Android平台在发送短信时,Android telephony
framework层通过Socket接口,调用RIL层的
requestSendSMS(void*data,size—t datalen,RIL—
Token t)函数,将Submit—PDU以PDU字符串的形
式传递给datat妇变量。由于在发送短信时,SMSC已经
包含在UIM卡中,所以从telephony framework传递
过来的PDU是不带SMSC的。为保证PDU字段的完
整性和正常解析,在RIL层处理上需将接收到PDU
串前加上0x00。整个解码工作流程如图1所示,详细
说明如下。
①将Submit—PDU字符串转化为标准GSM
SUBMIT SMS PDU结构体,调用函数smspdu
create—from hex()。SMS PDU结构体描述如下:
typedef struct SmsPDURec{
bytes—t base
bytes—t end;
bytes—t tpdu}
)SmsPDURee I
typedef struct SmsPDURee*SmsPDU‘
②取Submit—PDU协议字段中目标地址字段,调
用smspdu—get—receiver—address()函数。
③将目标地址字段转换为普通手机接收方号码,
调用函数sms address..to str()。
④调用函数smspdu—get—text—messgae()获取
SMS PDU结构体中的文本信息(要发送的短信正文
内容)和内容编码方式。由于在UTF一8里,英文字符仍
然跟ASCII编码一样,所以可以直接取到其value。但
对于中文短信,在取其UTF8字节流字符串的value
之后,需将UTF8字节流字符串的value转换为将
UCS2字符串的value,调用函数utf8 to ucs2()函
数。这里需注意的是,短信正文内容结束标记,对于英
文短信直接将字符串结尾设置为’0xlA’,对于中文短

本页地址 http://www.jybase.net/biancheng/20120605940.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com