先簡(jiǎn)單的來(lái)介紹一下如何使用 SMSLib 收發(fā)短信。
SMSLib 的唯一的入口類是 CService 類,該類主要負(fù)責(zé)設(shè)置各種訪問(wèn)手機(jī)的參數(shù),以及提供收發(fā)短信的功能。 CService 類只有一個(gè)構(gòu)造函數(shù) CService(String port, int baud, String gsmDeviceManufacturer, String gsmDeviceModel) 其中 port 是串口的端口號(hào)如 "COM5",baud 是訪問(wèn)串口的速率,該值的設(shè)定可以根據(jù)你的設(shè)備管理器里面的串口的屬性中支持的波特率設(shè)定合適的值,gsmDeviceManufacturer, gsmDeviceModel 這兩個(gè)參數(shù)主要是用來(lái)確定具體的 ATHandler 的實(shí)現(xiàn),如果你想用 SMSLib 默認(rèn)的 ATHandler,這兩個(gè)值都可以設(shè)置為 null 或者 "", 如果你想采用適合你自己手機(jī)型號(hào)的特定的 ATHandler 的時(shí)候,只要自己寫一個(gè)繼承 AbstractATHandler 的實(shí)現(xiàn)類,然后再用相關(guān)名稱標(biāo)識(shí)設(shè)置 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 } 上面的代碼是讀取手機(jī)中全部的短信,你也可以通過(guò)設(shè)置 CIncomingMessage.MessageClass 參數(shù)來(lái)讀取不同類型的短信,比如 CIncomingMessage.MessageClass.Read 表示只讀取已讀短信,CIncomingMessage.MessageClass.Unread 表示只讀取未讀短信,你也可以使用 readMessages(LinkedList messageList, int messageClass, int limit) 讀取你想要的指定數(shù)目的幾條短信。 發(fā)短信的過(guò)程也很簡(jiǎn)單,代碼如下: 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ā)送中文短信時(shí)要設(shè)置消息的編碼方式為 CMessage.MessageEncoding.EncUcs2,而且還要設(shè)置手機(jī)發(fā)送短信的協(xié)議為 PDU 模式,CService 默認(rèn)的協(xié)議就是 PDU, 所以在上面的代碼中沒(méi)有設(shè)置。 在后面的文章中我會(huì)繼續(xù)介紹收發(fā)短信時(shí)各個(gè)參數(shù)的意義及如何設(shè)置。 http://www./qujinlong123/ |
|
來(lái)自: ShangShujie > 《java》