Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> About Android Pdu Sms

About Android Pdu Sms

編輯:關於Android編程

今天好像什麼都沒做,就這麼快過去了,本來想出去的,可是後來沒心情了,在家窩了一天,下午打算看看項目中的問題,怎奈放不下心情,唉~杯具。晚上看了部電影就又到這會了。匆忙間改了點博客的東西,加了個圖像緩存,接著看下PDUSMS吧。網上的說法也眾說風雲,這個也算收藏篇吧。說實在的,網上找了好多,沒有找到一篇寫中要害的,具體PDU協議就那麼點內容,重要的是他的實現。等回頭項目完了再寫個完整實現方法的教程。現階段常規均以二進制的字節數組來發送UCS2,英文可采用7bit方式,這樣可減少字節占用,而pdu碼支持3種編碼格式:7-bit、8-bit和UCS2編碼。其應用主要為:

7-bit編碼:發送普通ASCII字符;
8-bit編碼:通常用於發送數據消息;
UCS2編碼:用於發送Unicode字符。

而一般的PDU編碼由A B C D E F G H I J K L M十三項組成,其中這十三項的釋義分別為:

A:短信息中心地址長度,2位十六進制數(1字節)。
B:短信息中心號碼類型,2位十六進制數。
C:短信息中心號碼,B+C的長度將由A中的數據決定。
D:文件頭字節,2位十六進制數。
E:信息類型,2位十六進制數。
F:被叫號碼長度,2位十六進制數。
G:被叫號碼類型,2位十六進制數,取值同B。
H:被叫號碼,長度由F中的數據決定。
I:協議標識,2位十六進制數。
J:數據編碼方案,2位十六進制數。
K:有效期,2位十六進制數。
L:用戶數據長度,2位十六進制數。
M:用戶數據,其長度由L中的數據決定。J中設定采用UCS2編碼,這裡是中英文的Unicode字符。

而其PDU協議說明如下:

PDU編碼協議簡單說明
例1 發送:SMSC號碼是+8613800250500,對方號碼是13693092030,消息內容是“Hello!”。從手機發出的PDU串可以是
08 91 68 31 08 20 05 05 F0 11 00 0D 91 68 31 96 03 29 30 F0 00 00 00 06 C8 32 9B FD 0E 01
對照規范,具體分析:
分段 含義 說明
08 SMSC地址信息的長度 共8個八位字節(包括91)
91 SMSC地址格式(TON/NPI) 用國際格式號碼(在前面加‘+’)
68 31 08 20 05 05 F0 SMSC地址 8613800250500,補‘F’湊成偶數個
11 基本參數(TP-MTI/VFP) 發送,TP-VP用相對格式
00 消息基准值(TP-MR) 0
0D 目標地址數字個數 共13個十進制數(不包括91和‘F’)
91 目標地址格式(TON/NPI) 用國際格式號碼(在前面加‘+’)
68 31 96 03 29 30 F0 目標地址(TP-DA) 8613693092030,補‘F’湊成偶數個
00 協議標識(TP-PID) 是普通GSM類型,點到點方式
00 用戶信息編碼方式(TP-DCS) 7-bit編碼
00 有效期(TP-VP) 5分鐘
06 用戶信息長度(TP-UDL) 實際長度6個字節
C8 32 9B FD 0E 01 用戶信息(TP-UD) “Hello!”
例2 接收:SMSC號碼是+8613800250500,對方號碼是13693092030,消息內容是“你好!”。手機接收到的PDU串可以是
08 91 68 31 08 20 05 05 F0 84 0D 91 68 31 96 03 29 30 F0 00 08 30 30 21 80 63 54 80 06 4F 60 59 7D 00 21
對照規范,具體分析:
分段 含義 說明
08 地址信息的長度 個八位字節(包括91)
91 SMSC地址格式(TON/NPI) 用國際格式號碼(在前面加‘+’)
68 31 08 20 05 05 F0 SMSC地址 8613800250500,補‘F’湊成偶數個
84 基本參數(TP-MTI/MMS/RP) 接收,無更多消息,有回復地址
0D 回復地址數字個數 共13個十進制數(不包括91和‘F’)
91 回復地址格式(TON/NPI) 用國際格式號碼(在前面加‘+’)
68 31 96 03 29 30 F0 回復地址(TP-RA) 8613693092030,補‘F’湊成偶數個
00 協議標識(TP-PID) 是普通GSM類型,點到點方式
08 用戶信息編碼方式(TP-DCS) UCS2編碼
30 30 21 80 63 54 80 時間戳(TP-SCTS) 2003-3-12 08:36:45  +8時區
06 用戶信息長度(TP-UDL) 實際長度6個字節
4F 60 59 7D 00 21 用戶信息(TP-UD) “你好!”
若基本參數的最高位(TP-RP)為0,則沒有回復地址的三個段。從Internet上發出的短消息常常是這種情形。
注意號碼和時間的表示方法,不是按正常順序順著來的,而且要以‘F’將奇數補成偶數。

在PDU Mode中,可以采用三種編碼方式來對發送的內容進行編碼,它們是7-bit、8-bit和UCS2編碼。7-bit編碼用於發送普通的ASCII字符,它將一串7-bit的字符(最高位為0)編碼成8-bit的數據,每8個字符可“壓縮”成7個;8-bit編碼通常用於發送數據消息,比如圖片和鈴聲等;而UCS2編碼用於發送Unicode字符。PDU串的用戶信息(TP-UD)段最大容量是140字節,所以在這三種編碼方式下,可以發送的短消息的最大字符數分別是160、140和70。這裡,將一個英文字母、一個漢字和一個數據字節都視為一個字符。
這裡只是說了PDU的協議和一些類型釋疑.當然,重點還是在使用上,前幾天也仔細看了下,過段時間有時間了寫份詳細的關於使用方面的教程,彌補此處的不足。
其中涉及到OTA短信相關協議,也是這幾天一直看的,mobile和塞班方面貌似都有類似問題。故留更新~

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved