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

正文內(nèi)容

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

2025-07-19 19:21 本頁(yè)面
 

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