JAVA 串列裝置(簡訊貓)SMS簡訊發送

來源:互聯網
上載者:User

前言: JAVA發送SMS簡訊有兩種方法:一是通過電訊廠商的網關;二是通過簡訊貓,不是很複雜(本文主要介紹)。 一、SMS簡訊發送方式(2種) 1、在Java編程中可以通過Java Comm類進行手機與電腦的串口通訊,並通過AT指令控制手機操作。(最底層方式) 2、SMSLib項目,封裝了底層AT指令集,不需自己在去寫底層的 AT指令與手機進行通訊。(需要SMSLib開發包,沒有完整的API文檔,只能通過範例查看,其運行時需要slf4j(類似log4j)和Java comm的支援) 二、所需的Java comm 檔案及配置方法:(1)下載檔案:javacomm20-win32.zip JAVA_HOME%是jdk的路徑,而非jre。SMSlib 只支援JDK1.6及以上. 1.comm.jar提供了通訊用的java API。拷貝到%JAVA_HOME%\jre\lib\ext目錄。 2.win32com.dll提供了供comm.jar調用的本地驅動介面。拷貝到%JAVA_HOME%\bin 3.javax.comm.properties是這個驅動的類設定檔。複製到%JAVA_HOME%\jre\lib目錄。 (2)下載SMSLib 三、開發步驟:(1)建立並配置相關對象並啟動服務 // 建立服務物件。(僅且只有一個服務物件,但可以有多個網關) this.srv = new Service(); // 建立一個GSM modem 類型代替網關(也可以建立別的類型)。 SerialModemGateway gateway = new SerialModemGateway("modem.com1", "COM1", 57600, "Nokia", ""); gateway.setProtocol(Protocols.PDU);// 設定PDU協議(PDU是預設的,也可以設定為TEXT簡單文本協議). gateway.setInbound(true);//設定網關能否接收訊息(入站) gateway.setOutbound(true);//設定網關能否發送訊息(出站) gateway.setSimPin("0000");// Let SMSLib know which is the SIM PIN. //對於非同步處理簡訊時,才採用事件驅動機制,如下: //設定事件的回調類(以下僅包括一部分.每個事件都是一個實現對應介面的類並實現其process方法). this.srv.setInboundMessageNotification(inboundNotification);//收到簡訊事件函數 this.srv.setCallNotification(callNotification);//接到電話事件函數 this.srv.setGatewayStatusNotification(statusNotification);//網關狀態變化事件函數 this.srv.setOrphanedMessageNotification(orphanedMessageNotification); this.srv.addGateway(gateway);// 添加網關到服務物件中. this.srv.startService();// 啟動服務物件. (2)讀取簡訊同步讀取樣本: msgList = new ArrayList(); //讀取資訊(主要方法)--兩個參數指定要儲存的位置和要讀取的簡訊的類型,如已讀,未讀,資訊報告等。 this.srv.readMessages(msgList, MessageClasses.ALL); for (InboundMessage msg : msgList) System.out.println(msg); There are two ways to read messages: The synchronous way: just call the readMessages() method of the Service class. SMSLib will iterate all defined gateways, collect messages from all and return them in a collection. Note that you will be blocked until SMSLib returns. There are many forms of the readMessages() call - choose the one according to your needs. The asynchronous way: you can implement some callback methods in your code (listeners) and pass them to the Service. SMSLib will then automatically call you upon message reception. For more information, see Callback methods. 同步讀取:this.srv.readMessages(msgList, MessageClasses.ALL); 非同步讀取:在事件處理函數中讀取. (3)傳送簡訊 There are two ways to send a message: The synchronous way: create a message object and call the sendMessage() method of the Service class. Note that you will be blocked until SMSLib returns. Upon return, you can examine the message object to see the fate of your message. The asynchronous way: use the queueMessage() family of methods to queue your message. Queueing a message returns control immediately to you. SMSLib keeps this message in internal queues and send its in the background. To learn about the fate of your message, you should setup a IOutboundMessageNotification callback method (see Callback methods). 同步發送:sendMessage() 非同步發送:queueMessage() 名詞解釋: gateway的概念的解釋介紹: gateway是用來收發sms簡訊的一個裝置或者一個服務的介面,一個網關可以是一個gsm modem 也可以是一個服務提供者,smslib 可以同時處理多個gateway 發送優先順序: Smslib 傳送簡訊可以提供一個無限制的優先順序,(就是發送多條簡訊時的一個策略,哪個先發,哪個後發),smslib 優先順序策略是跟你的gateway(gsm modem 或者是簡訊供應商)對應的,除非他們是偽照的。 非同步、同步接收 Smslib 有兩個方式接收簡訊 1. 同步接收:你可以隨時的調用read()方法來接收簡訊。 2. 非同步接收:等待smslib 自動接收簡訊,當簡訊到來時。 非同步、同步發送 Smslib 同樣有兩種方式去傳送簡訊 1. 同步發送:當你的app使用smslib 發送一條簡訊時,app線程將會鎖定,直到簡訊發送完畢,或是發送失敗。 2. 非同步發送:當你使用這種方式發送一條簡訊時,app 線程不會鎖定,smsliib 會馬上返回,smslib 會將你的簡訊(s)在後台發送。你可以選擇是否提醒發出簡訊的狀態。 回呼函數 當有新事件發生時(收到新簡訊,或者是一條簡訊發送成功或者是失敗),smslib 可以定義回調方法(事件驅動) Inbound voice calls:當有一電話打進時,你可以設定是否提醒你,請注意這個呼叫將會自動的無條件的自動掛斷 Inbound messages:每當有新的簡訊來到時,smlib 可以設定調用你的指定的方法 Outbound messages:當你使用非同步發送資訊時,你可以調用你指定的方法來得到已經發送的簡訊的狀態資訊等。 Gateway status changes:smslib 可以提醒你每次gateway 改變狀態的情況 Queue sending operation:smslib 可以隨時隨刻的準備發送一條簡訊,可以隨時隨地的取到當前簡訊的發送狀態。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.