999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于J2ME技術的短信智能回復系統的設計與實現

2007-12-31 00:00:00陳向東黃馨竹
計算機應用研究 2007年12期

摘要:首先介紹了J2ME體系結構,探討了短信智能回復系統的功能設計和關鍵技術,系統整體上參照MVC模式設計,使用了J2ME高級界面API、多線程、永久記錄存儲、短消息分組等多項技術實現;最后給出了系統實例仿真,并對該系統的應用進行了總結。

關鍵詞:J2ME; 多線程; 永久記錄存儲; 智能回復

中圖分類號:TP311文獻標志碼:A

文章編號:1001-3695(2007)12-0263-03

由于短信業務具有快捷方便及良好的交互性等特點,仍在快速發展,業內人士甚至把它喻為是繼報紙、廣播、電視及互聯網之后的“第五媒體”。為了解決當用戶處在不方便使用手機的情況下實現短信的智能回復這一問題,本文在J2ME的技術下,參照MVC 模式,使用J2ME 高級界面API、多線程、永久記錄存儲(RMS)和短消息分組等多項技術實現了短信智能回復系統。

1J2ME的結構體系

J2ME[1]的體系結構[2]如圖1所示。最底層是嵌入式設備的操作系統。支持J2ME的Java虛擬機尺寸很小,一般數量級在千字節左右,所以稱為KVM[3](kilobyte virtual machine)。在KVM之上,由CLDC[4](connected limited device configuration)提供了一些底層的API,如I/O接口等。最高層是MIDP[5](mobile information device profile),它為移動設備提供了包含用戶界面類、持久存儲功能和網絡功能的高級API接口,同時它也包括了一個供用戶下載到終端設備的標準運行環境。

基于MIDP和CLDC的MID(mobile information device)程序MIDlet可以在不同的MID之間移植。以下的短信智能回復系統就是基于MIDlet程序框架開發的。

2系統設計

所謂短信智能回復系統是指用戶預先設定的一條或多條消息,在手機收到短信時,能根據不同人發的信息實現相應信息的自動回復。

2.1設計思想

為了實現給不同的人回復相應的信息,必須先對手機中存儲的人員名單進行分組(如“爸爸”“媽媽”同為“家人”組),然后對群組中要回復的人員名單進行短信預設定。用戶一旦收到短信,便在所有的組中進行查詢。如果查到有要回復的信息,則立即進行回復;否則不做任何動作。具體操作如下:

a)人員名單分組。主要包括群組的添加、更改以及刪除。

b)設定自定義短信并分組存儲。對不同的回復對象設定相應的短信內容并存儲于不同的群組,用于告訴對方該用戶的狀態信息。

c)識別接收短信號碼。當收到新短信時,自動獲取發送方的地址(號碼)并進行識別。首先判斷該號碼的長度是否大于5。如果是,系統將在分組中查詢有無該號碼,若有,則找出相應的預設短信。對于1860、12580等廣告信息,因為其特點是位數比普通用戶少,所以無須進行號碼查詢,系統可直接設置對五位數以下的號碼不予回復。

d)自動發送自定義短信。對所需回復的短信,發送該號碼所在組中相應的預設短信。

系統整體上參照MVC 模式設計,將界面、數據、控制分為不同的模塊,分別設計,獨立開發。

2.2群組數據管理設計

群組信息和預設信息均需要保留,為此本系統采用RMS來處理數據持久化問題。RMS[6]是一個文本格式的數據庫系統,它提供記錄存儲和記錄檢索,是一個包含了記錄集的文件,等同于數據庫中的表,但并不是嚴格意義上的數據庫。

本系統需要存儲的主要數據如下:

a)群組以及該群組對應的預設短信。

b)群組中的人員,包括名字和電話號碼。

可設置兩個實體類來保存上述信息:

a)群組類。Zu包括兩個字段。String name表示改群組的名稱;String content表示改群組對應的短信內容。

b)人員對應類。People也包括兩個字段。String name表示人的名字;String num表示電話號碼。

因為RMS的數據持久化實現很輕量級,并未實現對象的序列化,所以添加接口PoInterface:

public interface PoInterface {

byte[] serialize(Object o);

Object deserialize(byte[] data);

}

只要有需要序列化的類實現該接口,就可以實現對象的存儲。

本系統主要是在RMS的io包類的基礎上編寫的一個FileUse類來實現相關的數據操作。該類中定義一個字符串常量private static final String zufile=“zufile”;表示存儲組信息的存儲介質,其介質名稱是固定的。FileUse. java 類是整個程序運行過程中涉及數據操作的核心類,系統運行過程中涉及的數據操作均在此類中進行了相應的定義。

對群組的操作主要是群組的添加、修改及刪除。群組的添加用FileUse類的addZu(Zu z),通過傳遞一個Zu對象給該方法,首先將對象z轉換為字節數組,再通過RMS中的RecordStore類將該字節數組添加進記錄存儲中。群組的修改通過modify(Zu z,Zu newz)方法實現,即先在存儲介質中查找源組對象z,并用修改過新的組對象newz來替換它。具體實現是通過RecordEnumeration接口的對象的hasNextElement()方法來遍歷記錄;通過PoInterface接口的deserialize方法還原組對象,并比較組對象的名稱和需要修改的組對象的名稱是否相同。如果相同,則用新的組對象來替換原有對象。群組的刪除使用deleteZu(string name)方法,通過參數傳遞群組的名稱,找到對應群組后進行刪除,并將群組中對應的人員的信息一起刪除。

對群組中人的操作主要是人員的添加、刪除、修改人員信息及人員號碼的查詢。人員添加使用FileUse類的addpeople(string zuname,string peoplename,string num),通過傳遞組名稱、人的名字和人的電話號碼給該方法。具體實現是通過組名稱在組文件中遍歷記錄,查找到組后,打開該組對應的people文件,寫入人員信息。人員刪除使用delpeople(string zuname,people p)方法,通過組名稱找到對應的people文件,查找到與people對象的匹配項,刪除該記錄。修改人員信息使用modifypeople(string zuname,people old,people new)方法,通過組名稱找到對應的people文件,查找到與people對象的匹配項old,用新的people對象new更新該記錄。人員號碼的查詢使用boo-lean queryPeople(string num)方法,通過電話號碼查詢是否存在該號碼。如果存在,返回該人員對應組的默認短信;否則,返回1。

2.3GUI設計

MIDP 應用程序通過用戶界面和設備使用者進行交互, 用戶界面設計在MIDP 程序設備中具有重要意義。MIDP 目標設備存在屏幕小、處理能力差、設備間差異性大等特點, MIDP 專家組重新制定了適合移動設備屏幕模型(screen model) 。

GUI部分是對短信預設和短信發送界面的設計。短信預設界面使用MIDP提供的高級界面類screen的TextBox子類作為文本輸入,短信偵聽界面使用的是alert子類顯示未讀短信的條數。

用戶顯示界面的完成還包括顯示界面的響應部分。將displayable類派生的command類綁定在displayable顯示組件上,通過組件的setcommandlistener()方法監聽該組件事件的發生;函數commandaction(command,displayable)實現事件的處理,響應用戶的動作。

2.4代碼分析

限于篇幅,以下只給出智能回復系統關鍵部分的核心代碼。有關群組數據管理中的群組添加、群組修改、群組刪除、人員添加、人員刪除、修改人員信息、類的序列化實現及GUI設計等具體功能的代碼,讀者可根據以上的敘述自行添加。

號碼查詢:

通過電話號碼查詢是否存在該號碼。如果存在返回該人員對應組的默認短信;否則,返回1。

具體實現:

public String queryPeople(String num){

Zu z=new Zu();

People p=new People();

try{

rs=RecordStore.openRecordStore(zufile, true);

RecordEnumeration re=rs.enumerateRecords(1, 1, true);

while(re.hasNextElement()){

int id=re.nextRecordId();

rs1=RecordStore.openRecordStore(id+peopleback, true);

RecordEnumeration re1=rs1.enumerateRecords(1, 1, true);

while(re1.hasNextElement()){//遍歷查找

byte[] b=re1.nextRecord();

p=(People)p.deserialize(b);

if(p.getNum().equals(num)){

re1.destroy();

re.destroy();

rs1.closeRecordStore();

rs.closeRecordStore();

z=(Zu)z.deserialize(rs.getRecord(id));

return z.getContent();//返回默認短信

}

}

re1.destroy();

rs1.closeRecordStore();

}

re.destroy();

rs.closeRecordStore();

}catch(Exception e){

e.printStackTrace();

}

return 1; //沒找到返回1

}

號碼識別及發送:

public void run() {

try {

msg=smsconn.receive();

/*msg是接收到的信息對象。判斷該對象的內容或接收的內容是否為空*/

if (msg !=1 msg instanceof TextMessage) {

String address=msg.getAddress(); //獲得發送方電話號碼

count++;

/*這里的count參數起計數作用,初始值為0,每接收到一條短信息后count值加1,用來記錄新短信的數目*/

String add=address+ \":\" +smsPort;

//告訴用戶接收到了幾條新短信,提醒用戶閱讀

content.setString(\"You have got\"+ count+ \" Message(s)\");

display.setCurrent(content);

if(address.length()>5) {

//判斷發送方的號碼是否大于5

FileUse f=new FileUse();

String content=f. queryPeople (address); //調用號碼查詢函數

if(content!=NULL){

Send(content); //如果滿足條件就把預設短信內容發送給對方

startApp();

} //調用Send函數發送短信

}

}

}

}

在監聽程序中,用Runnable接口實現多線程。監聽程序不能始終占據前臺,所以需要另外開啟一個線程。

Public void notifyIncomingMessage(MessageConnection conn) {

if (thread==1) {

done=1;

thread=new Thread(this);

thread.start();

//啟動另外一個線程

}

}

3實例仿真

目前,大部分手機廠商均提供其生產的不同機型的模擬器。此模擬器可以在PC上直接運行,真實模擬該型號手機上提供的J2ME運行環境[7]。WTK[8](J2ME wireless toolkit)為MIDlet應用程序的開發提供了一整套工具,從編譯調試到運行均能完成。仿真時短信的主叫方使用WTK模擬器Utility中的WMA console,該控制平臺沒有與手機相似的外形,但具有發送、接收短信息的功能。現給出一個實例來說明本系統的應用。

圖2為短信預設界面。圖3(a)為短信監聽界面;(b)為接收短信后監聽界面。圖4為收到自動回復短信。

4結束語

本短信智能回復系統根據基于J2ME的Java手機軟件這一思路,成功地解決了當用戶處在不方便使用手機的情況下實現短信智能回復這一問題。通過實例驗證了思路的正確性和可行性。由于系統采用MVC的模式進行建模,從而易于擴展系統的功能。隨著3G的到來,結合J2ME提供的功能,利用該技術也可實現圖片、視頻等多媒體系統的智能回復。總之,基于J2ME的Java手機軟件有著巨大的發展空間,它在移動應用的發展過程中發揮著舉足輕重的作用。

參考文獻:

[1]J2ME platform specification(JSR 68)[EB/OL].(2002-07-09).http://www.jcp.org.

[2]GHOSH S. Think small with J2ME[EB/OL].(2001).http://www-106.ibm.com/developerworks.

[3]Java 2 platform micro edition technology for creating mobile devices white paper[EB/OL].(2000-05-19).http://java.sun.com.

[4]Connected limited device configuration(JSR-30,JSR-139)[EB/OL].(2003-03-27).http://www.jcp.org.

[5]Mobile information device profile(JSR-37,JSR-118)[EB/OL].[2006-06-20].http://www.jcp.org.

[6]唐大仕.用Java/C#開發手機程序及移動應用[M].北京:電子工業出版社,2004:144-156.

[7]READ K, MAURER F. Developing mobile wireless applications[J]. IEEE Internet Computing, 2003,7(1): 81-86.

[8]J2ME wireless toolkit 2.2 Inc[EB/OL].[2005-11].http://java.sun.com/products/j2mewtoolkit.

“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”

主站蜘蛛池模板: 日本色综合网| 国产成人亚洲综合a∨婷婷| 99热这里只有成人精品国产| 日韩欧美中文字幕在线精品| 精品第一国产综合精品Aⅴ| 青青草原偷拍视频| 久久黄色免费电影| 特级毛片免费视频| 午夜视频www| 国产在线小视频| 国产成人三级在线观看视频| 亚洲最新地址| 呦女亚洲一区精品| 国产H片无码不卡在线视频| 国产综合日韩另类一区二区| 国产在线麻豆波多野结衣| 亚洲天堂视频在线观看| 欧美日韩成人| 欧美h在线观看| 中文字幕天无码久久精品视频免费| 一级爆乳无码av| 日本亚洲成高清一区二区三区| 国产成人综合亚洲欧美在| 亚洲综合在线最大成人| 欧美在线天堂| 亚洲精品中文字幕午夜| 欧洲熟妇精品视频| 国产亚洲欧美在线视频| 综合网久久| 欧美成人精品一级在线观看| 狠狠色丁婷婷综合久久| av在线5g无码天天| 六月婷婷精品视频在线观看| 日本午夜视频在线观看| 成人国产免费| 久久综合成人| 91探花国产综合在线精品| 精品91自产拍在线| 国产高颜值露脸在线观看| 国产福利微拍精品一区二区| 国产精品爽爽va在线无码观看| 九色视频在线免费观看| 亚洲综合九九| 日韩av在线直播| 久热这里只有精品6| 亚洲美女高潮久久久久久久| 欧美日韩国产在线人| 伊人AV天堂| 日韩第一页在线| 国产精品片在线观看手机版| 亚洲视频在线观看免费视频| 欧美在线视频不卡第一页| 亚洲第一极品精品无码| 国产成人久久综合777777麻豆 | 精品国产成人a在线观看| 国产午夜无码专区喷水| 国产视频自拍一区| 日韩黄色精品| 免费高清a毛片| 99久久国产综合精品女同 | 国产成人精品免费视频大全五级| 中文字幕在线视频免费| 91福利免费| jizz亚洲高清在线观看| 国产簧片免费在线播放| 又爽又大又黄a级毛片在线视频 | 怡春院欧美一区二区三区免费| 无码日韩人妻精品久久蜜桃| 亚洲无码高清一区| 国产精品嫩草影院视频| 青草精品视频| 毛片视频网址| 国产精品所毛片视频| 国产精品视频久| 免费看美女自慰的网站| 亚洲国产av无码综合原创国产| 久久精品66| 91福利国产成人精品导航| 国产精品极品美女自在线网站| 欧美一区中文字幕| 99久久免费精品特色大片| 亚洲精品另类|