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格式閱讀原文”

主站蜘蛛池模板: 伊伊人成亚洲综合人网7777| 日本手机在线视频| 91福利片| 99这里精品| 亚洲欧美日韩动漫| 波多野衣结在线精品二区| 欧美日韩中文字幕在线| 亚洲国产看片基地久久1024| 亚洲床戏一区| 国产va在线观看| 国产欧美视频在线观看| 亚洲视频四区| 国产成人亚洲综合A∨在线播放| 国产欧美亚洲精品第3页在线| 日本高清免费不卡视频| 五月婷婷丁香综合| 亚洲男女天堂| 日韩精品一区二区深田咏美| 欧美不卡视频在线观看| 免费无码在线观看| 欧美国产另类| 国产精品三级专区| 超碰91免费人妻| 亚洲成年人网| 欧美特级AAAAAA视频免费观看| 三区在线视频| 国产女人在线| 在线免费不卡视频| 国产精品成人免费综合| WWW丫丫国产成人精品| 丁香婷婷在线视频| 亚洲成人黄色在线观看| 成人亚洲国产| 中文字幕久久波多野结衣| a亚洲视频| 一区二区午夜| 91无码网站| 亚洲视频在线青青| 99青青青精品视频在线| 天堂中文在线资源| 日韩在线欧美在线| 国产成人无码AV在线播放动漫 | 久久这里只有精品2| 欧美另类第一页| 亚洲综合二区| 亚洲精品卡2卡3卡4卡5卡区| 国产精品密蕾丝视频| 亚洲天堂免费| 日韩高清在线观看不卡一区二区| 91在线播放免费不卡无毒| 国产精品亚洲精品爽爽| 美女视频黄频a免费高清不卡| 日韩毛片免费| 欧美一区日韩一区中文字幕页| 久久精品国产一区二区小说| 亚洲中字无码AV电影在线观看| 国产SUV精品一区二区| 婷婷综合在线观看丁香| 亚洲全网成人资源在线观看| 亚洲成人在线免费观看| 九九九久久国产精品| 国产高清无码第一十页在线观看| 欧美综合中文字幕久久| 国产一区二区三区在线观看视频| 日韩福利视频导航| 亚洲一区网站| 色精品视频| 成人国产免费| 亚洲va欧美ⅴa国产va影院| 国产一区二区三区免费观看| 成年人视频一区二区| 亚洲精品天堂自在久久77| 国产精品自在在线午夜区app| 国产精品无码久久久久AV| 人妖无码第一页| 欧美日韩福利| 中文字幕乱码二三区免费| 久久精品aⅴ无码中文字幕| 亚洲欧美日本国产综合在线 | 久久精品无码中文字幕| 国产麻豆aⅴ精品无码| 毛片在线区|