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

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

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

    隨筆-9  評(píng)論-168  文章-266  trackbacks-0

    前言:
    JAVA發(fā)送SMS短信有兩種方法:一是通過(guò)運(yùn)營(yíng)商的網(wǎng)關(guān);二是通過(guò)短信貓,不是很復(fù)雜(本文主要介紹)。

    一、SMS短信發(fā)送方式(2種)
    1、在Java編程中可以通過(guò)Java Comm類(lèi)進(jìn)行手機(jī)與電腦的串口通訊,并通過(guò)AT指令控制手機(jī)操作。(最底層方式)
    2、SMSLib項(xiàng)目,封裝了底層AT指令集,不需自己在去寫(xiě)底層的 AT指令與手機(jī)進(jìn)行通訊。(需要SMSLib開(kāi)發(fā)包,沒(méi)有完整的API文檔,只能通過(guò)樣例查看,其運(yùn)行時(shí)需要slf4j(類(lèi)似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調(diào)用的本地驅(qū)動(dòng)接口。拷貝到%JAVA_HOME%\bin
    3.javax.comm.properties是這個(gè)驅(qū)動(dòng)的類(lèi)配置文件。復(fù)制到%JAVA_HOME%\jre\lib目錄。
    (2)下載SMSLib

    三、開(kāi)發(fā)步驟:
    (1)創(chuàng)建并配置相關(guān)對(duì)象并啟動(dòng)服務(wù)

      // 創(chuàng)建服務(wù)對(duì)象。(僅且只有一個(gè)服務(wù)對(duì)象,但可以有多個(gè)網(wǎng)關(guān))
       this.srv = new Service();

       // 創(chuàng)建一個(gè)GSM modem 類(lèi)型代替網(wǎng)關(guān)(也可以創(chuàng)建別的類(lèi)型)。
       SerialModemGateway gateway = new SerialModemGateway("modem.com1", "COM1", 57600, "Nokia", "");
       gateway.setProtocol(Protocols.PDU);// 設(shè)置PDU協(xié)議(PDU是默認(rèn)的,也可以設(shè)置為T(mén)EXT簡(jiǎn)單文本協(xié)議).
       gateway.setInbound(true);//設(shè)置網(wǎng)關(guān)能否接收消息(入站)
       gateway.setOutbound(true);//設(shè)置網(wǎng)關(guān)能否發(fā)送消息(出站)
       gateway.setSimPin("0000");// Let SMSLib know which is the SIM PIN.

       //對(duì)于異步處理短信時(shí),才采用事件驅(qū)動(dòng)機(jī)制,如下:
       //設(shè)置事件的回調(diào)類(lèi)(以下僅包括一部分.每個(gè)事件都是一個(gè)實(shí)現(xiàn)對(duì)應(yīng)接口的類(lèi)并實(shí)現(xiàn)其process方法).
       this.srv.setInboundMessageNotification(inboundNotification);//收到短信事件函數(shù)
       this.srv.setCallNotification(callNotification);//接到電話事件函數(shù)
       this.srv.setGatewayStatusNotification(statusNotification);//網(wǎng)關(guān)狀態(tài)變化事件函數(shù)
       this.srv.setOrphanedMessageNotification(orphanedMessageNotification);


       this.srv.addGateway(gateway);// 添加網(wǎng)關(guān)到服務(wù)對(duì)象中.
       this.srv.startService();// 啟動(dòng)服務(wù)對(duì)象.

    (2)讀取短信
    同步讀取示例:
       msgList = new ArrayList<InboundMessage>();
       //讀取信息(主要方法)--兩個(gè)參數(shù)指定要保存的位置和要讀取的短信的類(lèi)型,如已讀,未讀,信息報(bào)告等。
       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);
    異步讀取:在事件處理函數(shù)中讀取.

    (3)發(fā)送短信

    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).

    同步發(fā)送:sendMessage()
    異步發(fā)送:queueMessage()


    名詞解釋:
    gateway的概念的解釋介紹:

           gateway是用來(lái)收發(fā)sms短信的一個(gè)設(shè)備或者一個(gè)服務(wù)的接口,一個(gè)網(wǎng)關(guān)可以是一個(gè)gsm modem 也可以是一個(gè)服務(wù)提供商,smslib 可以同時(shí)處理多個(gè)gateway

     

    發(fā)送優(yōu)先級(jí):

    Smslib 發(fā)送短信可以提供一個(gè)無(wú)限制的優(yōu)先級(jí),(就是發(fā)送多條短信時(shí)的一個(gè)策略,哪個(gè)先發(fā),哪個(gè)后發(fā)),smslib 優(yōu)先級(jí)策略是跟你的gateway(gsm modem 或者是短信提供商)對(duì)應(yīng)的,除非他們是偽照的。

     

    異步、同步接收

    Smslib 有兩個(gè)方式接收短信

    1.       同步接收:你可以隨時(shí)的調(diào)用read()方法來(lái)接收短信。

    2.       異步接收:等待smslib 自動(dòng)接收短信,當(dāng)短信到來(lái)時(shí)。

     

    異步、同步發(fā)送

    Smslib 同樣有兩種方式去發(fā)送短信

    1.       同步發(fā)送:當(dāng)你的app使用smslib 發(fā)送一條短信時(shí),app線程將會(huì)鎖定,直到短信發(fā)送完畢,或是發(fā)送失敗。

    2.       異步發(fā)送:當(dāng)你使用這種方式發(fā)送一條短信時(shí),app 線程不會(huì)鎖定,smsliib 會(huì)馬上返回,smslib 會(huì)將你的短信(s)在后臺(tái)發(fā)送。你可以選擇是否提醒發(fā)出短信的狀態(tài)。

     

    回調(diào)函數(shù)

    當(dāng)有新事件發(fā)生時(shí)(收到新短信,或者是一條短信發(fā)送成功或者是失敗),smslib 可以定義回調(diào)方法(事件驅(qū)動(dòng))

    Inbound voice calls:當(dāng)有一電話打進(jìn)時(shí),你可以設(shè)置是否提醒你,請(qǐng)注意這個(gè)呼叫將會(huì)自動(dòng)的無(wú)條件的自動(dòng)掛斷

    Inbound messages:每當(dāng)有新的短信來(lái)到時(shí),smlib 可以設(shè)置調(diào)用你的指定的方法

    Outbound messages:當(dāng)你使用異步發(fā)送信息時(shí),你可以調(diào)用你指定的方法來(lái)得到已經(jīng)發(fā)送的短信的狀態(tài)信息等。

    Gateway status changes:smslib 可以提醒你每次gateway 改變狀態(tài)的情況

    Queue sending operation:smslib 可以隨時(shí)隨刻的準(zhǔn)備發(fā)送一條短信,可以隨時(shí)隨地的取到當(dāng)前短信的發(fā)送狀態(tài)。


     

    posted on 2010-06-11 09:26 紫蝶∏飛揚(yáng)↗ 閱讀(7718) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): JAVA 串行通信

    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 日韩亚洲翔田千里在线| 亚洲国产区男人本色在线观看| 日本高清免费中文在线看| 亚洲人成在线影院| 国产亚洲免费的视频看| 国产AV无码专区亚洲AV男同| 国产精品亚洲精品观看不卡| 中文字幕a∨在线乱码免费看| 亚洲午夜精品久久久久久浪潮| 亚洲AV人无码综合在线观看| 暖暖免费在线中文日本| 亚洲精品高清在线| 国产VA免费精品高清在线| 国产精品亚洲高清一区二区 | 波多野结衣免费视频观看| 亚洲暴爽av人人爽日日碰| 午夜影院免费观看| 夜夜亚洲天天久久| 不卡视频免费在线观看| 亚洲国产精品热久久| 99re免费视频| 亚洲日韩久久综合中文字幕| 国产大片免费网站不卡美女| 亚洲AV无码一区二区乱子伦 | 老子影院午夜伦不卡亚洲| 亚洲国产成人久久笫一页| 中文字幕在线免费观看视频| 亚洲国产精品第一区二区| 在线精品免费视频无码的| a毛片成人免费全部播放| 伊人久久综在合线亚洲2019| 成人免费午夜视频| 成人国产精品免费视频| 亚洲精品永久www忘忧草| 中国人xxxxx69免费视频| 亚洲欧美国产日韩av野草社区| 亚洲毛片网址在线观看中文字幕| 99热在线观看免费| 免费播放国产性色生活片| 666精品国产精品亚洲| 久热中文字幕在线精品免费|