Android上的CDMA PDU解析
问题描述:
我已经编写了一个解码CDMA 3GPP2点对点SMS消息的程序。我在互联网上找到的一对CDMA PDU十六进制字符串上进行了测试,结果非常完美。但是,当我尝试在Android平台上的所有传入文本消息上实现它时,它总是失败。Android上的CDMA PDU解析
我看了看传入的PDU,它似乎没有遵循我以前看过的相同模式。任何人都可以解释这个PDU的格式是什么,或者我错过了什么来正确解码这个PDU?有没有额外的标题或字段我没有考虑到?
例PDU从进入短信把我的手机上:
000000000000100200000000000000000A36373839313031363734000000000000000000001B000310864D000306120624205611010B104C2CF9F3F5EBD73E7000
所有CDMA的PDU,我发现和测试了我的分析器上看起来更像是:
00000210020207028CE95DCC65800601FC08150003168D3001061024183060800306101004044847
载体:Verizon
电话:Samsung Galaxy S Fascinate
正在运行Android 2.3.3
答
请参阅$ SDK/sources/android-16/com /中的javadoc和roid/internal/telephony/cdma/SmsMessage:
/**
* Creates byte array (pseudo pdu) from SMS object.
* Note: Do not call this method more than once per object!
*/
......所以它没有遵循任何特定的CDMA标准。你可以解码它;所以罚款ASCII艺术: -
000000000000100200000000000000000A36373839313031363734000000000000000000001B000310864D000306120624205611010B104C2CF9F3F5EBD73E7000
--------messageType --digitMode --------bearerReply ------------------------------------------------------bearer data
--------teleService --ton --------------------src --replySeqNo --messageID --msts --userdata
--------serviceCategory --errorClass --len --XX--len --len
--numberMode --causeCode ------ ------------2012/06/24 20:56:11
--npi --------bearerDataLength ----------------------userdata
--len
请注意,我认为你做你的消息的剪切/粘贴错误 - 00字节的标有“XX”,我认为不应该有 - 幸运的是,它很容易被发现的日期和工作倒退。因此,这是来自6789101674用户数据的消息:
104C2CF9F3F5EBD73E7000,其前5位表示它是7位编码的(0x02)。已移至了用户数据的5位左边的部分,我们就只剩下:
09859f3e7ebd7ae7ce00
--len(septets) 9 septets == 63 bits, so we expect 8 bytes of body
----------------7bit-body
所以,你的7位体解码是“Bggguuugg”。