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

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


    網站導航:
     
    主站蜘蛛池模板: 中文字幕在亚洲第一在线| 国产高清免费在线| 亚洲av永久无码精品秋霞电影影院 | 亚洲综合伊人制服丝袜美腿| 91人人区免费区人人| 亚洲黄色在线电影| 国产大片线上免费观看 | 久久久久一级精品亚洲国产成人综合AV区 | 成年午夜视频免费观看视频| 亚洲日韩国产AV无码无码精品| 免费无码又爽又高潮视频| 久久精品国产亚洲av品善| 国产精品亚洲视频| 久久国产精品免费观看| 亚洲国产成人va在线观看网址| 成人免费毛片内射美女APP| 国产精品亚洲二区在线| 国产亚洲日韩一区二区三区| 免费国产在线视频| 亚洲人成在线播放| 国产又长又粗又爽免费视频| 一级黄色片免费观看| 精品国产亚洲一区二区三区 | 国产大陆亚洲精品国产| 中文字幕一精品亚洲无线一区| 久久青草国产免费观看| 亚洲午夜久久久久久尤物| 日本特黄特色免费大片| 中文字幕在线观看免费| 亚洲成a人不卡在线观看| 免费大学生国产在线观看p| 在线看片免费人成视频播| 性xxxx黑人与亚洲| 亚洲人成色7777在线观看| 在线看片免费不卡人成视频| 一级毛片a免费播放王色电影| 1区1区3区4区产品亚洲| 免费a级毛片无码av| 最近2019中文字幕免费大全5| 亚洲一区二区三区亚瑟| 久久精品无码专区免费|