亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

介紹J2ME可選包WMA(JSR120)

2019-11-18 16:11:01
字體:
來源:轉載
供稿:網友

    本文將詳細講解Wireless Messaging API(WMA,JSR120),WMA提供給應用開發者一個通用的API用于開發基于無線消息服務的應用程序,比如短消息服務。目前支持的發送類型為文本和二進制兩種。

    在講解WMA的結構和使用方法前,我們先來從感性上熟悉一下WMA。在SUN Wireless Toolkit 20中包括了一個短消息的范例。在運行Demo程序以前我們先看一下jad文件的內容,這可以幫助我們迅速了解應用程序的信息:

CBS-Message-Identifier: 50001

MIDlet-1: SMS Send, /icons/App.png, example.sms.SMSSend

MIDlet-2: SMS Receive, /icons/App.png, example.sms.SMSReceive

MIDlet-3: CBS Receive, /icons/App.png, example.cbs.CBSReceive

MIDlet-Data-Size: 0

MIDlet-Description: This midlet demonstrates SMS and CBS messaging

MIDlet-Jar-Size: 8569

MIDlet-Jar-URL: SMSDemo.jar

MIDlet-Name: SMS Demo

MIDlet-Permissions: javax.microedition.io.PushRegistry, javax.microedition.io.Connector.sms, javax.wireless.messaging.sms.receive,javax.wireless.messaging.sms.send,javax.microedition.io.Connector.cbs,javax.wireless.messaging.cbs.receive

MIDlet-Push-1: sms://:50000, example.sms.SMSReceive, *

MIDlet-Push-2: cbs://:50001, example.cbs.CBSReceive, *

MIDlet-Vendor: Sun Microsystems, Inc.

MIDlet-Version: 2.0

MicroEdition-Configuration: CLDC-1.0

MicroEdition-PRofile: MIDP-2.0

SMS-Port: 50000

    從上述信息中我們可以看出,MIDlet套件中共包括三個MIDlet,分別是SMSSend,SMSReceive和CBSReceive。我們最應該關注的是兩個MIDlet-Push實體,他們可以使得應用程序監聽SMS和CBS消息,當收到消息后AMS將激活相關的MIDlet來進行處理,套件需要使用MIDP2.0的新特性——Push。因此如果想正確運行這個應用程序,必須通過OTA定購的模式進行安裝。具體Push實體的屬性含義這里不過多進行解釋。

       WTK提供了WMA Console工具,可以和模擬器配合使用來調試基于無線短消息服務的應用程序。首先我們打開Ktoolbar選擇SMSDemo項目,編譯并打包后,從Project—>Run via OTA開始安裝應用程序,按照提示一步一步進行安裝。安裝后運行應用程序,系統為它分配手機號碼為5550000。
介紹J2ME可選包WMA(JSR120)(圖一)

然后我們從WTK中選擇Utilities—WMA Console,打開的時候系統會分配一個號碼,比如5550001。選擇SMS Send在用戶界面中輸入號碼5550001(WMA Console的號碼),在消息內容中輸入Hello選擇發送。這時候我們可以在WMA Console中看到從模擬器中發送過來的消息,如下圖所示:
介紹J2ME可選包WMA(JSR120)(圖二)

同樣,我們也可以使用WMA Console來發送短消息給模擬器,選擇Send SMS然后在客戶端的電話號碼中選擇5550000(模擬器的電話號碼),端口為50000,在消息中輸入How are you?并點擊發送按鈕。

介紹J2ME可選包WMA(JSR120)(圖三)


      我們的SMSDemo中使用了Push特性,因此在WMA Console在向模擬器發送短消息數據的時候,AMS會自動激活example.sms.SMSReceive,接收短消息內容。
介紹J2ME可選包WMA(JSR120)(圖四)

WMA Console也提供了發送CBS消息的功能,與SMS類似這里略去不講。

下面的部分詳細講解WMA的結構和使用方法。WMA是基于通用連接框架(Generic Connection Framework,GCF)的可選包,這又一次說明了GCF出色的擴展特性。所有的WMA組件都包括在javax.wireless.messaging包內。在這個包內定義了所有用于發送、接受短消息的接口,短消息的類型支持文本和二進制兩種。下圖是WMA組件結構圖:
介紹J2ME可選包WMA(JSR120)(圖五)

WMA的主要組件包括:Message、TextMessage、BinaryMessage、MessageConnection和MessageListener。其中Message接口定義了不同類型短消息的基礎部分,它的兩個子類BinaryMessage和TextMessage分別代表了文本類型和二進制類型的消息,通過調用BinaryMessage的setPayloadData()和TextMessage的setPayloadText()方法可以把有效負載數據添加到數據容器中,然后進行發送。MessageConnection接口是擴展了GCF中定義的Connection接口,MessageConnection接口提供了newMessage(),send()和receive()方法來創建、發送和接受消息對象。MessageListener實現了監聽器設計模式用于異步接受消息,當等待消息到來的時候系統不用堵塞。每次有消息到來的時候,平臺會調用MessageListener中定義的notifyIncomingMessage()方法。

       使用WMA非常簡單,下面我們進行簡單的講述:

1.        創建MessageConnection
創建MessageConnection通常有兩種方式,一種是按照客戶端方式創建,客戶端方式創建的MessageConnection只能用于發送短消息。我們需要在URL中提供電話號碼和端口,如下:
(MessageConnection)Connector.open("sms://+5121234567:5000");
另一種創建方式是服務器連接,這種連接方式可以用于發送和接收短消息。
(MessageConnection)Connector.open("sms://:5000");

2.        發送短消息
通過MessageConnection提供的newMessage()方法,我們可以創建Message對象,通過指定短消息類型為BINARY_MESSAGE或者TEXT_MESSAGE可分別得到二進制和文本類型的消息對象。如果我們是使用客戶端連接,那么在我們創建MessageConnection的時候,傳入的URL將作為Message對象的目標地址。如果我們是使用服務器連接,那么我需要使用setAddress()方法設置目標地址。下面的代碼說明了如何發送短消息。
   String address = destinationAddress + ":" + smsPort;

   MessageConnection smsconn = null;

        try {

            /** Open the message connection. */

            smsconn = (MessageConnection)Connector.open(address);

 

            TextMessage txtmessage = (TextMessage)smsconn.newMessage(


                MessageConnection.TEXT_MESSAGE);

            txtmessage.setAddress(address);

            txtmessage.setPayloadText(messageBox.getString());

            smsconn.send(txtmessage);

        } catch (Throwable t) {

System.out.println("Send caught: ");

t.printStackTrace();

        }

    if (smsconn != null) {

           try {

                smsconn.close();

            } catch (IOException ioe) {

System.out.println("Closing connection caught: ");

ioe.printStackTrace();

 

            }               

        }

    }

發送二進制短消息和發送文本消息非常類似,我們只是需要把byte[]來代替String作為發送的數據。范例代碼如下:

public void sendBinaryMessage(MessageConnection mc, byte[]

  msg, String url) {

    try {

        BinaryMessage bmsg =

            (BinaryMessage)mc.newMessage

                (MessageConnection.BINARY_MESSAGE);

        if (url!= null)

            bmsg.setAddress(url);

        bmsg.setPayloadData(msg);

        mc.send(bmsg);

    }

    catch(Exception e) {


        //  Handle the exception...

        System.out.println("sendBinaryMessage " + e);

    }

}

3.  接收短消息

只有作為服務器連接的時候才可以接受短消息,接收短消息的時候我們需要單獨啟動一個線程來處理。調用receive()方法后,我們需要首先判斷Message的類型是二進制還是文本,只有這樣才可以調用正確的方法來接收數據。
public void processMessage() {

        Message msg = null;

        //  Try reading (maybe block for) a message

        try {

            msg = mc.receive();

        }

        catch (Exception e) {

            // Handle reading errors

            System.out.println("processMessage.receive " + e);

        }

        // Process the received message

        if (msg instanceof TextMessage) {

            TextMessage tmsg = (TextMessage)msg;

            //  Handle the text message...

            ticker.setString(tmsg.getPayloadText());

        }

        else {

            // process received message

            if (msg instanceof BinaryMessage) {

                BinaryMessage bmsg = (BinaryMessage)msg;

                byte[] data = bmsg.getPayloadData();

                //  Handle the binary message...

            }


            else {

                //  Ignore

            }

        }

    }

 

}

4.  使用MessageListener

    如果我們的MIDlet注冊了一個MessageListener,那么當收到短消息的時候平臺就會調用notifyIncomingMessage()方法來進行處理。其實這和MIDP圖形用戶界面中的回調機制是一樣的。通常使用MessageListener按照如下的步驟,首先定義MIDlet實現MessageListener接口,當然你也可以選擇不使用MIDlet來實現MessageListener。接下來我們需要實現MessageListener的方法notifyIncomingMessage()。最后MessageConnection需要注冊MessageListener,在應用程序結束的時候你最好注銷它,調用setMessageListener(null)。

   本文沒有提供完整的范例,讀者可以參考WTK中提供的SMSDemo。

(出處:http://www.49028c.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久中文字幕视频| 国产精品∨欧美精品v日韩精品| 日韩精品在线观看一区二区| 欧美性xxxxhd| 欧美福利小视频| 亚洲国产小视频| 日韩一区av在线| 亚洲欧美日韩中文在线| 亚洲最大福利视频网站| 国产精品成人一区| 亚洲欧美日本另类| 日韩在线观看免费高清| 91久久国产精品91久久性色| 国产精品成人一区二区三区吃奶| 日韩欧美国产成人| 久久久久久久爱| 夜夜嗨av色一区二区不卡| 亚洲二区在线播放视频| 麻豆国产va免费精品高清在线| 亚洲成av人片在线观看香蕉| 国产精品露脸av在线| 91免费国产视频| 国产精品福利久久久| 久久久久成人精品| www.久久久久| 中文字幕亚洲色图| 欧美日韩在线看| 亚洲精品电影在线观看| 热门国产精品亚洲第一区在线| 欧洲亚洲妇女av| 久久综合免费视频影院| 青草热久免费精品视频| 亚洲第一精品夜夜躁人人爽| 一区二区欧美久久| 亚洲一区二区国产| 亚洲国产高潮在线观看| 亚洲女人天堂网| 亚洲人精品午夜在线观看| 日韩在线视频线视频免费网站| 成人网址在线观看| 人九九综合九九宗合| 69视频在线免费观看| 在线观看中文字幕亚洲| 欧美日韩国产综合新一区| 91色精品视频在线| 国产午夜精品视频免费不卡69堂| 日韩av片免费在线观看| 91精品国产91久久久久久最新| 欧美交受高潮1| 91精品在线看| 亚洲免费一在线| 成人在线免费观看视视频| 久久99久久99精品免观看粉嫩| 国产精品偷伦一区二区| 亚洲视频国产视频| 欧美孕妇毛茸茸xxxx| 日本a级片电影一区二区| 中文字幕日韩视频| 亚洲视频自拍偷拍| 日韩精品福利在线| 亚洲欧美成人一区二区在线电影| 亚洲国产精品一区二区三区| 亚洲免费视频一区二区| 777午夜精品福利在线观看| 欧美国产日韩一区二区在线观看| 精品久久久久久久久久| 日韩av影视在线| 97色在线视频| 精品国产一区二区三区久久狼5月| 成人乱人伦精品视频在线观看| 亚洲午夜久久久久久久| 亚洲影院色在线观看免费| 国产精品成人v| 一本一本久久a久久精品牛牛影视| 超碰97人人做人人爱少妇| 国产a∨精品一区二区三区不卡| 欧美高清性猛交| 国产精品久久久av| 伊人久久综合97精品| 欧美剧在线观看| 久久久中文字幕| 欧美激情久久久久久| 高清欧美性猛交xxxx黑人猛交| 亚洲精品wwwww| 蜜臀久久99精品久久久无需会员| 欧美中文在线字幕| 欧美精品videossex性护士| 91色视频在线观看| 亚洲精品99999| 亚洲成色777777在线观看影院| 日韩欧美在线视频| 亚洲欧美999| 亚洲精品美女在线观看播放| 在线观看中文字幕亚洲| 国产精品中文字幕在线观看| 精品久久久免费| 亚洲欧美制服综合另类| 亚洲福利精品在线| 久久九九精品99国产精品| 亚洲人成77777在线观看网| 精品亚洲va在线va天堂资源站| 日韩视频在线免费观看| 日韩欧美aⅴ综合网站发布| 欧美激情精品在线| 久久精品视频播放| 日韩精品在线免费播放| 国产精品视频在线观看| 丝袜情趣国产精品| 亚洲人成电影网站色www| 18久久久久久| 爱福利视频一区| 亚洲精品网站在线播放gif| 日韩精品免费在线| 欧洲成人免费aa| 日产精品久久久一区二区福利| 亚洲精品美女在线观看播放| 久久人人爽亚洲精品天堂| 2020久久国产精品| 欧美成人午夜免费视在线看片| 大伊人狠狠躁夜夜躁av一区| 成人美女av在线直播| 亚洲精品网址在线观看| 久久97久久97精品免视看| 亚洲人成电影网站色| 亚洲精品免费网站| 欧美日韩亚洲精品内裤| 色诱女教师一区二区三区| 久久久www成人免费精品张筱雨| 国产欧美一区二区白浆黑人| 18一19gay欧美视频网站| 精品在线小视频| 永久免费毛片在线播放不卡| 精品在线小视频| 亚洲精品99久久久久| 欧美黄色免费网站| 成人福利视频网| 亚洲成人a级网| 97av在线视频| 欧美日韩中文字幕日韩欧美| 亚洲精品久久久久中文字幕欢迎你| 国产欧美一区二区三区在线| 欧美中文字幕视频| 视频在线观看99| 成人激情视频在线观看| www.日韩免费| 亚洲天堂男人的天堂| 一区二区三区www| 日韩日本欧美亚洲| 久久香蕉精品香蕉| 伊人久久久久久久久久久久久| 欧美电影在线免费观看网站| 久久综合88中文色鬼| 国产精品午夜一区二区欲梦| 亚洲精品一区二区在线| 欧美日韩成人在线观看| 日韩欧美在线播放| 国产97在线视频| 国内精品400部情侣激情| 一区二区三区回区在观看免费视频| 大胆欧美人体视频| 国产精品视频久| 日韩欧美aⅴ综合网站发布| 欧美午夜性色大片在线观看| 日韩av在线天堂网|