先簡單的來介紹一下如何使用 SMSLib 收發(fā)短信。
SMSLib 的唯一的入口類是 CService 類,該類主要負責設置各種訪問手機的參數(shù),以及提供收發(fā)短信的功能。
CService類只有一個構造函數(shù) CService(String port, int baud, String gsmDeviceManufacturer,String gsmDeviceModel) 其中 port 是串口的端口號如 "COM5",baud是訪問串口的速率,該值的設定可以根據(jù)你的設備管理器里面的串口的屬性中支持的波特率設定合適的值,gsmDeviceManufacturer,gsmDeviceModel 這兩個參數(shù)主要是用來確定具體的 ATHandler 的實現(xiàn),如果你想用 SMSLib 默認的ATHandler,這兩個值都可以設置為 null 或者 "", 如果你想采用適合你自己手機型號的特定的 ATHandler的時候,只要自己寫一個繼承 AbstractATHandler 的實現(xiàn)類,然后再用相關名稱標識設置gsmDeviceManufacturer, gsmDeviceModel 的值就可以了。
接收短信的代碼如下:
1 try
2 {
3 CService srv = new CService("COM5", 9600, null, null);
4
5 srv.connect();
6
7 LinkedList messageList = new LinkedList();
8
9 srv.readMessages(messageList, CIncomingMessage.MessageClass.All);
10
11 // TODO: 處理返回的 messageList。
12
13 srv.disconnect();
14 }
15 catch (Exception e)
16 {
17 e.printStackTrace();
18 }
上面的代碼是讀取手機中全部的短信,你也可以通過設置 CIncomingMessage.MessageClass參數(shù)來讀取不同類型的短信,比如 CIncomingMessage.MessageClass.Read表示只讀取已讀短信,CIncomingMessage.MessageClass.Unread 表示只讀取未讀短信,你也可以使用readMessages(LinkedList messageList, int messageClass, int limit)讀取你想要的指定數(shù)目的幾條短信。
發(fā)短信的過程也很簡單,代碼如下:
1 try
2 {
3 CService srv = new CService("COM5", 9600, null, null);
4
5 srv.connect();
6
7 COutgoingMessage msg = new COutgoingMessage("138102*****", "我的第一條短信。。。");
8
9 msg.setMessageEncoding(CMessage.MessageEncoding.EncUcs2);
10
11 srv.sendMessage(msg);
12
13 srv.disconnect();
14 }
15 catch (Exception e)
16 {
17 e.printStackTrace();
18 }
發(fā)送中文短信時要設置消息的編碼方式為 CMessage.MessageEncoding.EncUcs2,而且還要設置手機發(fā)送短信的協(xié)議為 PDU 模式,CService 默認的協(xié)議就是 PDU, 所以在上面的代碼中沒有設置。
在后面的文章中我會繼續(xù)介紹收發(fā)短信時各個參數(shù)的意義及如何設置。
http://www.blogjava.net/qujinlong123/