- 浏览: 435998 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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
短信开发指通过串口 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 937以 tools/tradefederation/Androi ... -
NanoHttpd 构建android 手机端的HttpServer
2015-10-20 16:24 2947NanoHttpd是Github上的一个开源项目, 通过下载 ... -
permission denial : android.permission.INTERACT_ACROSS_USERS_FULL
2015-08-05 16:50 5046在android5.0上运行 Runtime.getRun ... -
android getprop() 和 java System.getPropety()
2015-06-04 14:39 63581 System.getPropety()是java中的方 ... -
android cts测试相关
2015-05-27 17:38 0example: -
android uiautomator 相关
2015-05-15 16:53 16951 Runtime.getRuntime().exec 启 ... -
android UI test Espresso
2015-04-10 18:31 1202google android UI测试工具 espresso ... -
android 安全(转)
2014-12-26 12:37 721一 如何不被反编译解析1防止反编译工具的反编译 查看 ... -
nexus related
2014-12-17 15:29 7401 nexus drivers https://deve ... -
git related
2014-12-17 15:24 9671 see all detailed git info ... -
ubuntu android studio 配置和使用
2014-12-10 17:34 3627Ubuntu 64位,Android studio 的安装, ... -
eclipse+ADT+android配置相关
2014-12-05 16:40 14531 eclipse 过旧时,ant 运行不了,会报sdk. ... -
anroid 开发小知识点
2014-10-09 09:52 8231 1)代码 获取APK安装路径和包名 L ... -
androird 内存泄露 浅析
2013-06-19 17:52 1449主要是记录工作中出 ... -
mms 相关链接
2013-03-15 13:53 1394http://blog.chinaunix.net/uid ... -
java层堆栈调用的打印
2012-12-26 15:14 44711. 在指定的函数内打印相关java调用 Log.d ... -
mms 数据包相关
2012-11-26 14:51 22711 抓包 adb shell tcpdump -i any ... -
sms AT指令返回错误代码: CMS errors & CME errors 的区别!
2012-10-26 18:35 12026CMS的是短信中心的返回错误。 CME 是设备返 ... -
sms 发送 radio log
2012-10-26 17:25 4072发送短信:radio.log 关键字 :SEND_SMS ... -
SQLite --函数
2012-09-03 18:22 1986一、日期和时间函数:原文地址SQLite主要支持以下 ...
相关推荐
在SP短信开发中,MISC系统短信SP接入是至关重要的环节。MISC系统(Mobile Internet Service Center,移动互联网服务中心)是运营商...对于SP而言,掌握这些基础知识并进行细致的实践是成功接入和提供短信服务的基础。
以上就是Android平台上的短信开发基础知识,包括短信的发送和接收。在实际开发中,还需要考虑到各种异常处理、用户交互、以及不同Android版本的兼容性问题。希望这个概述能帮助你在Android SMS开发中取得成功。
Java短信开发Demo主要涉及到的是Java在通信领域中的...以上就是基于"java 短信开发 demo"的Java短信服务开发中涉及的主要知识点。在实际开发中,还需要根据具体的业务需求和短信服务提供商的具体API进行适配和调整。
手机开发原理与基础知识是移动应用开发的基石,涵盖了硬件、操作系统、网络通信等多个领域。本文将深入探讨手机的运行机制,解析其基本功能和应用功能,以及涉及的通信制式。 首先,我们要理解手机硬件的基本构成。...
总结起来,Android短信数据库的基础知识涉及数据库的路径、主要表格及它们之间的关联。通过掌握这些知识,开发者可以有效地读取、管理和操作Android设备上的短信数据,从而实现各种定制化的短信功能。
通过上述知识点的介绍,我们可以看到,在Windows Mobile平台上进行短信开发时,需要掌握一系列API函数的使用方法,包括发送短信的API函数(`SmsOpen`, `SmsSendMessage`, `SmsClose`)和接收短信的相关接口(`...
### Android开发基础习题知识点解析 #### 一、填空题知识点解析 1. **Android系统是由** **Google** **开发的。** - **知识点解释:** Android是一款基于Linux内核的操作系统,最初由Andy Rubin开发并在2003年...
【SGIP客户端短信开发】是中国联通SP服务提供商为了实现与短信中心(SMSC)通信而进行的一种技术开发。SP(Service Provider)是提供各种增值服务的运营商,如新闻订阅、彩铃下载等,它们需要通过SGIP协议来发送和...
华为短信开发包主要针对的是企业级的短信服务,它提供了多种协议的支持,包括CMPP2、CMPP3、CNGP、SGIP、SMGP和SMPP,这些协议是通信行业中用于短信传输的标准协议。下面将详细介绍这些协议以及与它们相关的Java开发...
【移动MAS短信开发Demo(ASP)】是一种基于ASP(Active Server Pages)技术构建的应用程序,主要用于实现企业级的短信发送功能。在IT行业中,移动MAS(Mobile Application Server)通常指的是中国移动为企业提供的移动...
【VFP短信开发例程详解】 Visual FoxPro(VFP)是Microsoft推出的一款数据库开发工具,以其简单易用和高效灵活的特点,在过去广泛...同时,理解并掌握这些知识点,也为你后续学习其他编程语言和通信技术奠定了基础。
1. **DLL基础知识**:DLL(Dynamic Link Library)是Windows平台下的一个重要组件,它允许不同程序共享同一块代码或数据,减少内存占用,提高系统效率。开发者可以通过API函数来调用DLL中的功能。 2. **C++Builder*...
在每个语言的示例中,开发者需要了解网络通信、HTTP请求、错误处理和日志记录等基础知识。同时,理解短信服务提供商的API文档,掌握如何正确构造请求和解析响应也是至关重要的。此外,考虑到短信发送的安全性,比如...
Java短信开发包是一个专...在学习和使用这个Java短信开发包时,要确保仔细阅读提供的文档,理解每个示例代码的功能,以及如何将这些知识点应用到实际项目中。通过不断实践和学习,你将在短信服务开发领域变得更加熟练。
为了实现这样的程序,你可能需要参考相关书籍、在线教程、SDK文档以及论坛讨论,以获取更多关于VC++和手机短信开发的知识。同时,实践是提升技能的关键,尝试编写小程序并逐步扩展功能,将是掌握这项技术的有效途径...
下面,我们将深入探讨短信程序开发的关键知识点。 1. **SMS协议理解**:短信程序开发的基础是理解SMS(Short Message Service)协议,包括它的基本工作原理、数据格式以及与手机网络的交互方式。这涉及到GSM 03.40...
通过对《串口短信开发手册》的深入分析,我们可以看出这份文档不仅提供了关于如何使用AT协议进行短信功能开发的基础知识,还详细阐述了具体的实现方法和技术细节。这对于想要在嵌入式系统或其他项目中集成短信功能的...
短信平台开发实践及案例的知识点可以从以下几个方面展开: 1. 开发前的准备 首先,为了开发短信平台,开发者需要选择合适的开发工具和环境。在本案例中,开发团队选择了JDK 1.6作为Java开发的基础环境。安装JDK后,...
根据提供的文件信息,本文将详细解析“短信猫二次开发发送短信代码”的相关知识点,包括AT指令的基本概念、底层编写方式以及具体的短信发送流程。 ### 一、AT指令基础 AT指令(AT Command)是一种用于控制调制解调...