freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于j2me平臺的手機(jī)天氣預(yù)報程序的設(shè)計與實現(xiàn)(編輯修改稿)

2025-07-19 19:21 本頁面
 

【文章內(nèi)容簡介】 如圖 所示,顯示了 J2ME的構(gòu)件。 J2ME構(gòu)件 J2ME生命周期當(dāng)我們新建一個MIDlet項目和源文件的時候,大概的基本框架如下:public class a extends MIDlet{ public a(){ } protected void destroyApp(boolean unconditional) throws MIDletStateChangeException{ // TODO Autogenerated method stub } protected void pauseApp(){ } protected void startApp() throws MIDletStateChangeException{ }}每一個J2ME的MIDlet程序都需要一個主類,就是MIDlet類,繼承超類MIDlet,這個類相當(dāng)于主程序所整個流程開始的類,里面有3個需要重寫的方法:destroyApp、pauseApp、startApp。startApp是當(dāng)J2ME程序開始的時候所執(zhí)行的入口方法當(dāng)程序開始運(yùn)行的時候,在MIDlet主類的構(gòu)造方法調(diào)用之后就會立即運(yùn)行這個方法,需要說明的是,MIDlet構(gòu)造函數(shù)在整個程序的生命周期里面都只執(zhí)行一次,而startApp則不是。startApp方法當(dāng)從外部接受到暫停的指令的時候,會暫時跳出,當(dāng)外部恢復(fù)的時候,程序會再次執(zhí)行startApp。pauseApp是當(dāng)程序通過外部命令暫停的時候,比如支持J2ME的手機(jī)按退出鍵的時候,會選擇關(guān)閉程序或者暫停程序,當(dāng)選擇了暫停程序,程序會立即跳到pauseApp,這個時候,我們可以在pauseApp方法中釋放一些資源,節(jié)省手機(jī)的內(nèi)存空間,而且還要把程序必要的數(shù)據(jù)保存下載,當(dāng)再次恢復(fù)進(jìn)入startApp方法的時候,就需要讀取之前保存的必要數(shù)據(jù)來恢復(fù)現(xiàn)場。destroyApp是當(dāng)程序正常退出的時候,比如通過程序的退出菜單、執(zhí)行了退出命令的時候降被調(diào)用。在destroyApp方法中我們可以釋放所有的資源,關(guān)閉所有的連接(包括文件和網(wǎng)絡(luò)連接),保存數(shù)據(jù)到數(shù)據(jù)集等等。這樣可以使程序正常的退出并且保存必要的內(nèi)存數(shù)據(jù)機(jī)的Flash存儲器中。 3 天氣預(yù)報程序的設(shè)計 設(shè)計準(zhǔn)備首先,當(dāng)我萌生一個開發(fā)手機(jī)上的天氣預(yù)報軟件的想法的時候,我首要考慮到的問題是跨平臺,因為目前來看,手機(jī)的操作系統(tǒng)五花八門,在不同的手機(jī)上需要采用不同的編程語言才能實現(xiàn)。這是一個麻煩的問題,因為在特定的手機(jī)平臺上開發(fā)應(yīng)用程序,需要對這個手機(jī)平臺有比較深入的了解,了解編程語言、特定的庫等等。作為一個開發(fā)者,當(dāng)然希望自己所編寫的程序能夠在更多的手機(jī)上運(yùn)行,但是因為個人的能力有限,不可能為不同的平臺的手機(jī)都開發(fā)或者移植這樣一個天氣預(yù)報程序,這是個經(jīng)濟(jì)和效率的問題。所以我最后選擇了J2ME平臺。J2ME平臺有著良好的跨平臺性,這也正是Java語言的優(yōu)點,SUN公司(已被Oracle收購)當(dāng)時開發(fā)J2ME語言以及平臺的時候,充分考慮到了跨平臺的因素,保證在不同手機(jī)平臺上開發(fā)的J2ME程序,都能夠使用統(tǒng)一的標(biāo)準(zhǔn)的庫,即使在不同手機(jī)平臺上有著不同的Java虛擬機(jī),但是執(zhí)行相同的J2ME程序,結(jié)果都是一樣的。 設(shè)計思路接下來就需要思考如何實現(xiàn)這么一個天氣預(yù)報軟件。天氣預(yù)報是大部分人都很關(guān)心的一個話題,滲透到生活的方方面面。人們能夠通過手機(jī)來方便的查詢當(dāng)前城市的天氣狀況,的確是很方便的。天氣預(yù)報主要需要考慮以下的幾個方面:(1)網(wǎng)絡(luò)連接(2)天氣數(shù)據(jù)的獲取(3)解析獲取到的數(shù)據(jù)(4)顯示到手機(jī)屏幕(5)城市管理(實現(xiàn)多個城市的查詢)整個程序需要完全實現(xiàn)以上所列出的功能,使這些功能之間很好的相互配合,才能最終完成整個軟件的設(shè)計。接下來對每個方面詳細(xì)說明一下。 網(wǎng)絡(luò)連接:要能夠?qū)崟r的通過手機(jī)獲取天氣預(yù)報的信息,目前能夠采取的唯一途徑就是網(wǎng)絡(luò)連接。現(xiàn)在手機(jī)上網(wǎng)已經(jīng)是一個很普片的現(xiàn)象,充分利用手機(jī)方便的上網(wǎng)功能,是實現(xiàn)手機(jī)上的天氣預(yù)報程序的關(guān)鍵。這個就需要使得手機(jī)通過J2ME來與服務(wù)器(提供天氣預(yù)報數(shù)據(jù))建立一個網(wǎng)絡(luò)連接,然后彼此互相傳送數(shù)據(jù)才能夠進(jìn)行信息的交換。信息交換包括發(fā)送和接受,發(fā)送是指手機(jī)端需要發(fā)送查詢信息(請求)給服務(wù)器,服務(wù)器收到手機(jī)端發(fā)送的信息才能知道用戶需要查詢什么信息,包括查詢天氣的城市和時間等內(nèi)容。 天氣數(shù)據(jù)的獲?。菏謾C(jī)上的天氣預(yù)報程序,最主要的數(shù)據(jù)處理就是能夠通過與服務(wù)器之間的網(wǎng)絡(luò)連接,在與服務(wù)器進(jìn)行數(shù)據(jù)交換的時候能夠正確的從服務(wù)器獲取相關(guān)的天氣預(yù)報的信息,這個問題是一個比較棘手的。因為手機(jī)平臺的各種方面的限制,目前并不能確定J2ME平臺能夠接受和處理什么樣的數(shù)據(jù),而且天氣數(shù)據(jù)的來源也是一個待解決的問題。好在最后發(fā)現(xiàn)了一個很方便而且可靠的數(shù)據(jù)來源——Google API。Google公司的API給很多開發(fā)者帶來了方便,包括地圖、天氣、搜索等都有相應(yīng)的API提供給開發(fā)者,我們有理由相信Google公司所提供的API的可靠性和數(shù)據(jù)的真實性。所以最后決定用Google所提供的天氣預(yù)報的API。分析Google的天氣API得之是通過post一個請求給Google所提供的API URL,然后Google服務(wù)器會返回一個文本,分析知此文本是一個標(biāo)準(zhǔn)的xml文件。里面已經(jīng)包括了所有可以使用的天氣數(shù)據(jù)。接下來的工作只需要解析這個xml文件就可以獲得自己想要的天氣字符串。 解析獲取到的數(shù)據(jù):目前需要在手機(jī)的J2ME平臺找到一個合適的方法來解析從Google服務(wù)器獲得的天氣xml文檔。查閱了相關(guān)的資料,J2ME的庫中沒有相關(guān)的xml解析的庫。后來自己試著通過字符串的一些函數(shù)來解析xml中間的字符串,不過發(fā)現(xiàn)效果很不好,有一些編碼的問題存在,而且自己解析字符串存在著一些漏洞,無法考慮到所有的xml文件中的字符串的情況。于是決定采用第三方的、適合J2ME平臺的xml解析器。通過查詢資料,發(fā)現(xiàn)kxml這個解析器是一個輕量級的解析器,這個很適合J2ME這種受到硬件限制的設(shè)備,內(nèi)存不能占用太高,庫不能太復(fù)雜,運(yùn)行效率也需要考慮。查詢的資料顯示kxml可以運(yùn)用在applet中,但是還沒有運(yùn)用在J2ME中的有關(guān)資料,不過鑒于Java的跨平臺性,我想把kxml運(yùn)用在J2ME平臺上也不是問題。最終,只運(yùn)用了kxml庫中的幾個方法便解析出了需要的數(shù)據(jù),而且沒有任何兼容性的問題,這再一次驗證了Java跨平臺的強(qiáng)大。 顯示到手機(jī)屏幕:手機(jī)屏幕有個特點,分辨率不高,而且不同手機(jī)型號的分辨率大不相同,要在不同手機(jī)上實現(xiàn)分辨率的自適應(yīng)是一個很頭疼的問題。分辨率的不同主要影響的是圖片資源的顯示問題。相同的圖片在不同的手機(jī)分辨率上所顯示的效果截然不同。所以如果為不同分辨率的手機(jī)制作分辨率不同的圖片,這樣會照成在同一個手機(jī)上不需要用到的圖片的資源的浪費(fèi)。所以最后采取了折中的辦法。為了解決這個問題,需要編寫兩個不同的程序,一個程序是無關(guān)手機(jī)分辨率的,所謂無關(guān)手機(jī)分辨率,是指在不同分辨率手機(jī)上都可以正常使用,上面也提到了,手機(jī)分辨率的不同最大的影響是圖片資源的顯示,那么我索性編一個不是通過圖片來展現(xiàn)天氣查詢結(jié)果的程序,以適應(yīng)不同分辨率手機(jī)的需要。而另外一個程序,是為了能夠在大多數(shù)手機(jī)上運(yùn)行,采用大多數(shù)手機(jī)分辨率都能夠顯示的圖片資源。目前來看,大多數(shù)手機(jī)所使用的分辨率是QVGA級別的(240*320),所以只需要按照這個分辨率來準(zhǔn)備特定的圖片資源,就可以在所有QVGA屏幕的分辨率上以圖片顯示的方法展現(xiàn)天氣預(yù)報查詢的結(jié)果。 城市管理(實現(xiàn)多個城市的查詢):一個天氣預(yù)報程序,亟待需要的是一個城市管理的功能,這個很容易理解。因為不同地區(qū)的用戶,需要查詢不同地區(qū)的天氣預(yù)報,這個需要能有一個城市的設(shè)置功能,但是往往設(shè)置或者查詢一個城市是遠(yuǎn)遠(yuǎn)不夠的,還需要考慮那種在外地或者經(jīng)常在多個城市之間奔波的用戶,這些用戶需要能夠存儲多個自己設(shè)定的程序并且查詢這些設(shè)定好的城市的天氣。城市管理界面的功能就是為了滿足以上需求。需要的功能是能夠?qū)Τ鞘羞M(jìn)行添加、刪除等操作。這個操作就需要使用J2ME的持久性存儲功能來對城市信息進(jìn)行存儲。 程序架構(gòu):程序開始從記錄集讀取默認(rèn)城市和自定義城市列表建立默認(rèn)城市記錄集連接網(wǎng)絡(luò)獲取天氣xml數(shù)據(jù)解析數(shù)據(jù)顯示天氣YN存在默認(rèn)城市 程序邏輯流圖2. 類框圖:MIDletJWeatherCanvasCity ListWeather Canvas 程序類框圖程序主要分為三個類:Jweather 主類、CityList城市列表類、Weather Canvas圖形畫布類。 類分層結(jié)構(gòu)現(xiàn)在分別詳細(xì)說明一下各個類的功能。(1)Jweather類繼承MIDlet類,MIDlet類是J2ME的主類,即程序的入口類。任何J2ME程序都是以這個類為程序執(zhí)行的開始點,程序的基本初始化、基本成員變量和方法都可以在這個類中定義。繼承MIDlet類的主類需要重寫其中必要的三個方法,分別是startApp、pauseApp和destoryApp。這三個類在J2ME的生命周期中也提到過,startApp是J2ME程序的入口方法,pauseApp是當(dāng)程序通過外部消息暫停的情況下所執(zhí)行的方法,例如在真實的手機(jī)上運(yùn)行程序的時候,如果這時有電話打進(jìn)手機(jī),程序會被迫中止,這時pauseApp將被執(zhí)行。destroyApp是當(dāng)程序通過正常的J2ME方法退出J2ME程序的時候?qū)?zhí)行的方法,可以在這個方法中釋放程序需要用到的資源。 JWeather類結(jié)構(gòu)JWeather類實現(xiàn)CommandListener來處理基本的鍵盤響應(yīng)。 JWeather類字段摘要JWeather類中有4個字符串?dāng)?shù)組,用于存儲解析之后的天氣數(shù)據(jù)。 JWeather類方法摘要在JWeather類中需要用到一些必要的方法,這些方法使用在連接網(wǎng)絡(luò)、獲取數(shù)據(jù)、解析數(shù)據(jù)等各個方面。Bytes2int方法是用于在記錄集中讀取數(shù)據(jù)的時候,將bytes數(shù)組轉(zhuǎn)換為整數(shù)。因為記錄集只能存儲bytes數(shù)組類型,任何數(shù)據(jù)在記錄集中存儲的時候都需要將它轉(zhuǎn)換為bytes數(shù)組類型,而當(dāng)從記錄集中讀取數(shù)據(jù)的時候則需要使用相應(yīng)的方法將bytes數(shù)組類型轉(zhuǎn)化為需要使用的類型。cl
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1