<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 串行通信

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲一区二区免费视频| 大片免费观看92在线视频线视频| 成人免费午夜无码视频| 亚洲另类无码一区二区三区| 亚洲人成网站在线观看青青| 日韩av无码久久精品免费| 亚洲va久久久久| 亚洲精品尤物yw在线影院| 99久久精品免费视频| 亚洲av无码一区二区三区天堂| 国产亚洲精品无码专区| 成人影片麻豆国产影片免费观看 | 国产亚洲综合视频| 国产l精品国产亚洲区在线观看| 亚洲三级高清免费| 成av免费大片黄在线观看| 亚洲不卡在线观看| 亚洲国产无套无码av电影| 午夜无遮挡羞羞漫画免费| 大地影院MV在线观看视频免费| 亚洲精品色播一区二区| 日韩亚洲Av人人夜夜澡人人爽 | 久久国产精品成人免费| 亚洲精华国产精华精华液好用| 久久精品国产精品亚洲艾草网| 日本免费无遮挡吸乳视频电影| 日韩免费高清大片在线| 日本精品久久久久久久久免费| 亚洲乱码卡三乱码新区| 亚洲精品二区国产综合野狼| 国产免费av一区二区三区| 日韩亚洲国产高清免费视频| 日本视频在线观看永久免费| 高清免费久久午夜精品| 亚洲丁香婷婷综合久久| 亚洲午夜电影在线观看高清 | 久久精品国产亚洲综合色| 免费a级毛片18以上观看精品| 色婷婷7777免费视频在线观看| 久久99热精品免费观看动漫 | 成人av片无码免费天天看|