- 浏览: 427371 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
weiwu83:
为什么我在手机内访问127.0.0.1访问不了呀
NanoHttpd 构建android 手机端的HttpServer -
jiae:
为啥我的插入语句乱码? 但是可以插入数据库 然后复制你 ...
SQLite3 在应用启动时初始化数据 -
lichenxiao77:
...
android 连接远程数据库 -
林源滔:
为什么我make clobber之后第一次执行make 可以。 ...
No rule to make target `out/target/common/obj/JAVA_LIBRARIES/bouncycastle_in -
cn23snyga:
new String(str.getBytes("I ...
android 平台上SQLite3中文乱码 --我的小bug
短信开发基础知识
- 博客分类:
- android Mms源码分析
- Android
短信开发指通过串口 at 命令驱动短信进行短信发送和接收操作。 短信操作分为三种模式: block,pdu 和 Text 短信传送有三种编码: 7 位, 8 位, UniCode at 命令 ,at 命令是驱动短信设备的标准工业命令,除了业界的标准之外,每个厂商可能会对其进行扩展,不过一般来说,标准命令应该够用,这次用的是西门子 tc35i ,有专门的 at 命令文档。 Gsm03.38 规范: Alphabets and language-specific information 着重介绍短信发送中对字符集的控制部分 Gsm03.40 规范: Technical realization of the Short Message Service (SMS) Point-to-Point (PP) 详细介绍各种不同短信的不同实现 Gsm07.05 规范: Use of Data Terminal Equipment - Data Circuit terminating;Equipment (DTE - DCE) interface for Short Message Service (SMS) and Cell Broadcast Service (CBS) ,介绍 at 的一些控制命令。 Gsm07.07 规范:着重介绍 at 的短信相关命令,可以说是 at 的 sms 规范。 Block 模式基本已经被 pdu 模式取代,没有具体研究 Text 模式比较简单,但是支持的设备不是很全,而且对于中文似乎有些问题,在金笛的网站技术资料中似乎提到了一句不能实现中文。 AT + CGMF=1<CR> AT + CGMS= “ 13605696031 ” ,129<CR> pdu 编码主要包括两个主要的部分,一是 pdu 串的整体数据格式,分别因为发送信息串和接收信息串而有区别,二是 pdu 中文本部分的编码,分别因为字符集而不同。 我们也可以这样来理解这个 pdu 编码的格式, sms 相当于一个协议栈,最简单的协议栈: 根据 gsm03.40 规范, sms 协议包括以下几层: 1、 SM-AL :应用层。这个部分就是数据部分。 2、 SM-TL :传输层。我们可以清楚的看到这里描述了主要的短信内容,包括发送号码,接收号码,信息类型,编码,数据报长度等等,这也是我们编程主要要面对的问题。 3、 SM-RL :中继层。这个指的是短信在网关之间中继需要的协议。 4、 SM-LL: 链路层。 从上述描述中我们可以清楚的看到,我们编程主要集中于传输层。 PDU 串的用户信息 (TP-UD) 段最大容量是 140 字节,所以在这三种编码方式下,可以发送的短消息的最大字符数分别是 160 、 140 和 70 。这里,将一个英文字母、一个汉字和一个数据字节都视为一个字符。 图片不能正确显示 由于这样的移位,我们可以看到我们能发的最多英文字符等于: 140*8/7 = 160 。 8-bit 编码通常用于发送数据消息,比如图片和铃声等; 发送中文时,必须用 UCS2 ( utf-16 )进行编码,最多可以发 140/2 = 70 个汉字。 UniCode 编码转换也比较简单,以中文为例,一个中文字符是两个字节,直接对高位字节和低位字节进行十六进制转换就可以了。如“欢迎”, UniCode 编码是 6B22 8FCE ,这同时也就是转换的结果,如果发送的串中有英文字符,那么在前面补全 00 ,以保证一个字符对应两个字节。 做 wap-push 短信的时候有些问题了,开始的时候也按照 Unicode 编码处理,总是失败,后来才发现,有个编码字段设为了 uft-8 ,所以在这种情况下,还是可以出现其他编码方式的。 详细请参考 gsm 0438 规范和 gsm0440 规范,里面有详细的关于各种短消息类型的描述。 在 sms 中到底支持多少种类型的短信,短信类型由什么进行控制,这是我们在这里需要着重介绍的问题。 在传输层来分,一共有六大短信类型: SMS-DELIVER , SMS-DELIVER-REPORT , SMS-SUBMIT , SMS-SUBMIT-REPORT , SMS-STATUS-REPORT , SMS-COMMAND ,这六种短信类型,由短信中心地址后的第一个字节的最低两位控制。 bit1 bit0 Message type 0 0 SMS-DELIVER (in the direction SC to MS) 0 0 SMS-DELIVER REPORT (in the direction MS to SC) 1 0 SMS-STATUS-REPORT (in the direction SC to MS) 1 0 SMS-COMMAND (in the direction MS to SC) 0 1 SMS-SUBMIT (in the direction MS to SC) 0 1 SMS-SUBMIT-REPORT (in the direction SC to MS) 1 1 Reserved 也就是说,每个短信在短信中心地址之后的第一个字节的最低两位是至关重要的。他决定了如何读这条短信(结合是发送的,还是接收的) 短信发送中都会涉及到短信地址的问题,他们的编码规则是一致的 , 简单来说就是 BCD8421码编码。 如: 08 91 683108501505F 0 , 08 :地址长度,(号码类型 + 号码长度) /2 的十六进制表示 91 :号码类型 683108501505F 0 :号码,实际号码应为: 8613805515500 ,号码处理方法为 , 如果为 +86 开始 , 将 + 号去掉 ,然后判断是否为偶数 , 不是在末尾补 F, 然后将奇数位和偶数位互换 这个字节比较特殊,表明整个短信的字符编码,数据内容等信息。详细说明参考 gsm03.38 规范。 Pdu 编码的第一个字节比较有意思,这个字节会根据六种不同的短信按位有不同的意思,拿句专业一点的话来说,叫bitmask. 用图来大概描述一下,详细参考 gsm0340 的 9.2.3 段。 位数 MSG_Deliever MSG_SUBMIT 7 TP_RP (回复地址) TP_RP 6 TP_UDHI (数据报头) TP_UDHI 5 TP_SRI (需要回复) TP_SRR (请求回复) 4 TP_VPF( 时间格式 ) 3 2 TP_MMS (多条短信标志, 1为无, 0 为有) TP_RD( 拒绝重复标志 ) 1 , 0 TP_MTI (短信类型) TP_MTI 常见值 04 ,正常收到, 44 ,有报头短信 11 ,正常发送, 51 ,有报头短信 在这个里面还有一个字节比较特殊,就是协议标识。 一般都是 00 ,表示点到点的标准短信。 参考 gsm0340 的 9.2.3 .24TP_UD 部分,这个部分中间的一种情况就是描述超长短信的处理。 长短信关键涉及一个数据报头的问题,数据报头由“长度”和多个“数据元素”组成。
在GSM协议规范中,每个短信息的长度不应超过140个Octs,故每次发送最多70个Unicode单元;如果需要发送超长短信息,只需将要发送信息进行分割(70Unicode单元编码为140个8-bit组,加如上前缀14个,单条PDU最大长度为154 Octs),即可完成任意长度的消息发送。下面是个例子,表明的是短信的第一条和第二条。 第一条: 第二条 0891683108701505F0 SMSC 地址 0891683108701505F0 SMSC 地址 44有协议头标志 44有协议头标志 0D91683127563658F0回复地址 0D91683127563658F0回复地址 0008 TP-PID ,TP-DCS 0008 TP-PID ,TP-DCS 70803011142423时间戳 (TP-SCTS) 70803011142423时间戳 (TP-SCTS) 8C 用户信息长度 (TP-UDL) 26用户信息长度 (TP-UDL) 05协议头的长度 05协议头的长度 00标志这是个分拆短信 00标志这是个分拆短信 03分拆数据元素的长度 03分拆数据元素的长度 39唯一标志(用于把两条短信合并) 39唯一标志(用于把两条短信合并) 02一共两条 02一共两条 01这是第一条 02这是第二条 4E8C96F64E005B……数据内容1 81EA4ECE524D5C3……数据内容2
1.1. 基本知识
1.1.1. 相关文档
1.1.2. Block 模式
1.1.3. Text 模式
>Hello World!<^Z>
1.1.4. Pdu 模式
1.2. SMS 用户数据的编码方法
1.2.1. 英文 7 位编码
这是 gsm 的默认编码方式
1.2.2. 数据 8 位编码
1.2.3. 中文 pdu 编码
1.2.4. Wap-push 中的中文编码
1.3. 短信报头分析
1.3.1. 短信类型
1.3.2. 地址编码
1.3.3. TP-DCS( 数据编码格式 )
1.3.4. 第一个字节
1.3.5. TP-PID (协议标识)
1.3.6. 超长短信
发表评论
-
Android.mk文件解析
2016-01-27 14:01 871以 tools/tradefederation/Androi ... -
NanoHttpd 构建android 手机端的HttpServer
2015-10-20 16:24 2807NanoHttpd是Github上的一个开源项目, 通过下载 ... -
permission denial : android.permission.INTERACT_ACROSS_USERS_FULL
2015-08-05 16:50 4988在android5.0上运行 Runtime.getRun ... -
android getprop() 和 java System.getPropety()
2015-06-04 14:39 62331 System.getPropety()是java中的方 ... -
android cts测试相关
2015-05-27 17:38 0example: -
android uiautomator 相关
2015-05-15 16:53 16431 Runtime.getRuntime().exec 启 ... -
android UI test Espresso
2015-04-10 18:31 1152google android UI测试工具 espresso ... -
android 安全(转)
2014-12-26 12:37 668一 如何不被反编译解析1防止反编译工具的反编译 查看 ... -
nexus related
2014-12-17 15:29 6841 nexus drivers https://deve ... -
git related
2014-12-17 15:24 9121 see all detailed git info ... -
ubuntu android studio 配置和使用
2014-12-10 17:34 3564Ubuntu 64位,Android studio 的安装, ... -
eclipse+ADT+android配置相关
2014-12-05 16:40 13901 eclipse 过旧时,ant 运行不了,会报sdk. ... -
anroid 开发小知识点
2014-10-09 09:52 7711 1)代码 获取APK安装路径和包名 L ... -
androird 内存泄露 浅析
2013-06-19 17:52 1352主要是记录工作中出 ... -
mms 相关链接
2013-03-15 13:53 1335http://blog.chinaunix.net/uid ... -
java层堆栈调用的打印
2012-12-26 15:14 44111. 在指定的函数内打印相关java调用 Log.d ... -
mms 数据包相关
2012-11-26 14:51 21981 抓包 adb shell tcpdump -i any ... -
sms AT指令返回错误代码: CMS errors & CME errors 的区别!
2012-10-26 18:35 11897CMS的是短信中心的返回错误。 CME 是设备返 ... -
sms 发送 radio log
2012-10-26 17:25 3964发送短信:radio.log 关键字 :SEND_SMS ... -
SQLite --函数
2012-09-03 18:22 1886一、日期和时间函数:原文地址SQLite主要支持以下 ...
相关推荐
SP 短信开发-基础知识篇2(MISC系统短信SP接入培训)
本文就来探讨一下另外一种通过Visual C#发送短信息的简单实现方法,这种方法在实现过程中比我们想象的要简单许多,只需拥有Visual C#一般编程基础,并确定您的计算机接入互联网即可。下面就来详细介绍一下Visual C#...
在信息时代,不仅是新的技术变革和物质形态的变化可以产生新媒体,新的软件开发, 新的信息服务方式的推出都可以称之为一种新媒体的诞生。 广播,电视相对于印刷媒体是新媒体,但对于网络媒体便是"旧媒体"。每一次...
《Android任务驱动式教程》通过一个手机文件管理器的案例设计全面介绍Android平台开发的基础知识,循序渐进地介绍使用 Android开发手机应用程序的实战技术,使读者不仅能够学习到Android操作系统的架构和基本原理,...
本书讲述由浅入深,由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的开发者和Android的进阶程序开发者学习。 csdn 另外一个版本有解压时需要密码,本资源无解压密码。
接下来详细讲解了Android 核心应用的核心内容,主要包括电话/短信处理、GPS 定位、网络应用开发、多媒体项目开发、手机游戏开发等知识点的具体用法;然后讲解了Android 的高级知识,主要包括Android 典型模块、...
本书在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.1... 本书讲述由浅入深,由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。
本书以Android手机应用程序开发为主题,通过130多个范例全面且深度地... 本书讲述由浅入深,由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。
本书以Android手机应用程序开发为主题,通过130多个范例全面且深度地... 本书讲述由浅入深,由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。
全文档共包括七章,分门别类介绍了 RTX Client SDK 的知识,全面深入地讲解了 RTX Client SDK 的各项功能,各章节层次分明,先介绍基础原理,再分析各种具体的技术手段,最后是解决方案举例。即能让读者系统的学习...
本书在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.1)... 本书讲述由浅入深,由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。
内容简介 《Google Android SDK开发范例大全...《Google Android SDK开发范例大全(第3版)》内容由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。
第1篇介绍了Visual C++网络开发基础知识,包括Visual C++网络编程概述、Socket套接字编程和多线程与异步套接字编程。第2篇介绍了7大类网络开发典型应用案例的实现,包括FTP客户端实现之一、 FTP客户端实现之二、网页...
《Google Android SDK开发范例大全(第3版)》...《Google Android SDK开发范例大全(第3版)》内容由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。
第1篇介绍了Visual C++网络开发基础知识,包括Visual C++网络编程概述、Socket套接字编程和多线程与异步套接字编程。第2篇介绍了7大类网络开发典型应用案例的实现,包括FTP客户端实现之一、 FTP客户端实现之二、网页...
全书共分11章,主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发控件、Android手机收发短信等通信服务、开发Android手机的自动服务功能和娱乐多媒体功能以及...
本书讲述由浅入深,由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。 作者简介编辑 余志龙,来自于手机制造业、电视媒体业、网络、电信产业、...
共三个Part 这是Part2 内容简介 本书以Android手机应用程序开发为... 本书讲述由浅入深,由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。
附带书签,共三个Part 这是Part3 内容简介 本书以Android手机应用... 本书讲述由浅入深,由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。
java web项目,某公司的信息管理系统项目,包括数据库sql文件。