<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-9  評論-168  文章-266  trackbacks-0

    前言:
    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<InboundMessage>();
       //讀取信息(主要方法)--兩個參數指定要保存的位置和要讀取的短信的類型,如已讀,未讀,信息報告等。
       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 可以隨時隨刻的準備發送一條短信,可以隨時隨地的取到當前短信的發送狀態。


     

    posted on 2010-06-11 09:26 紫蝶∏飛揚↗ 閱讀(7699) 評論(0)  編輯  收藏 所屬分類: JAVA 串行通信

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 精品久久8x国产免费观看| 国产视频精品免费| 狠狠色伊人亚洲综合网站色| 免费看少妇作爱视频| jizz日本免费| 亚洲三级视频在线观看| 免费大香伊蕉在人线国产| 日本免费人成网ww555在线| 亚洲人成网站观看在线播放| 亚洲一级毛片在线播放| 亚洲精品美女久久久久9999| 最新亚洲精品国偷自产在线 | 亚洲视频一区二区| mm1313亚洲国产精品无码试看| 免费观看大片毛片| 免费人成在线观看播放a| 亚洲国产成人精品91久久久| 九九久久精品国产免费看小说| 久久精品国产精品亚洲| 你是我的城池营垒免费看 | 亚洲av无码电影网| 最新中文字幕免费视频| 亚洲a∨无码精品色午夜| 亚洲成a人在线看天堂无码| 国产免费人成视频尤勿视频| 亚洲国产老鸭窝一区二区三区| jjizz全部免费看片| 亚洲成AV人影片在线观看| 亚洲一区二区三区免费| 免费A级毛片无码A∨| 在线a亚洲老鸭窝天堂av高清| 免费一区二区三区四区五区 | 精品免费AV一区二区三区| 久久99亚洲综合精品首页| 最近中文字幕mv免费高清视频8 | 亚洲最大中文字幕| 四虎影视永久免费视频观看| 伊人免费在线观看高清版| 日本亚洲色大成网站www久久| 亚洲综合精品网站| 91免费资源网站入口|