基于Android系統(tǒng)終端實(shí)現(xiàn)3G WIFI無(wú)線(xiàn)漫游
出處:沈紅雷,陳夠喜等 發(fā)布于:2011-12-16 14:33:27
摘 要:近年來(lái)3G 網(wǎng)絡(luò)得到迅速發(fā)展,其用戶(hù)量也迅速增長(zhǎng)。3G 網(wǎng)絡(luò)覆蓋范圍廣,而WIFI網(wǎng)絡(luò)帶寬高。因此,實(shí)現(xiàn)3G與wIFI網(wǎng)絡(luò)的互通將具有十分重要的意義。分析了基于Android系統(tǒng)手機(jī)終端的3G網(wǎng)絡(luò)和wIFI網(wǎng)絡(luò)的連接機(jī)制,根據(jù)此連接機(jī)制針對(duì)當(dāng)前興起的Android系統(tǒng)應(yīng)用程序的開(kāi)發(fā)進(jìn)行了分析,實(shí)現(xiàn)了由3G 到WIFI的無(wú)線(xiàn)漫游,該漫游主要是通過(guò)Android中的ListView數(shù)據(jù)顯示adapter以及SharedPreference實(shí)現(xiàn)了連接節(jié)點(diǎn)SSID的顯示及存儲(chǔ)。此WIFI節(jié)點(diǎn)漫游節(jié)省了用戶(hù)使用的3G流量,可以使用戶(hù)充分利用當(dāng)前興起的無(wú)線(xiàn)網(wǎng)絡(luò)資源。
關(guān)鍵詞:3G,WIFI網(wǎng)絡(luò),ListView,SharedPreference
隨著人們?nèi)粘I詈凸ぷ鞴?jié)奏的不斷加快,人們對(duì)信息獲取的便捷程度、對(duì)移動(dòng)辦公、移動(dòng)娛樂(lè)的重視程度正與日俱增。無(wú)線(xiàn)接人是滿(mǎn)足這一高速增長(zhǎng)需求的途徑,無(wú)線(xiàn)接人的兩個(gè)主角是3G(3rdGeneration)技術(shù)和W1FI(Wireless Fidelity)技術(shù)。
本論文針對(duì)目前比較流行的Android系統(tǒng)手機(jī)終端的3G、wIFI連接機(jī)制實(shí)現(xiàn)了3G和wIFI的無(wú)線(xiàn)漫游。
1 Android平臺(tái)介紹
Android是Google公司推出的一個(gè)手機(jī)平臺(tái),是一個(gè)真正意義上的開(kāi)放性移動(dòng)設(shè)備綜合平臺(tái)。它包括操作系統(tǒng)、用戶(hù)界面和應(yīng)用程序及移動(dòng)電話(huà)工作所需的全部軟件,而且不存在任何以往阻礙移動(dòng)產(chǎn)業(yè)創(chuàng)新的專(zhuān)有權(quán)障礙。Android是由Unix+Java構(gòu)成的。它的架構(gòu)和工作原理決定了Android即目前可移植性的手機(jī)操作系統(tǒng)。Android是開(kāi)源軟件,能夠有效降低軟件的成本,從而降低手機(jī)的整體價(jià)格,終讓每個(gè)用戶(hù)能夠自由的獲取信息。Android提供了一個(gè)從操作系統(tǒng)到應(yīng)用程序的完整的軟件棧,同時(shí)又允許人們定制差異化,以形成自己的競(jìng)爭(zhēng)優(yōu)勢(shì),這對(duì)于手機(jī)制造商來(lái)說(shuō),具有強(qiáng)大的吸引力。開(kāi)源軟件帶來(lái)的另一個(gè)好處是允許廠商自主解決問(wèn)題。在此我們借助android系統(tǒng)的開(kāi)源性及可定制的特性在此基礎(chǔ)上增加了3G、WIFI的無(wú)線(xiàn)漫游機(jī)制。
2 WIFI漫游中ListView的作用
Activity是構(gòu)成應(yīng)用程序中重要的構(gòu)造塊,在Android應(yīng)用程序中,幾乎都是通過(guò)Activity來(lái)與用戶(hù)進(jìn)行交互,所以Activity主要負(fù)責(zé)的就是創(chuàng)建與用戶(hù)進(jìn)行交互的顯示窗口,你可以在這些窗口里通過(guò)調(diào)用setContentView(View)方法來(lái)顯示你自己的用戶(hù)界面。在實(shí)際開(kāi)發(fā)應(yīng)用程序的過(guò)程中通常需要用到列表顯示功能,那么在Android應(yīng)用中,我們是通過(guò)Android中的一個(gè)特殊組件ListView來(lái)進(jìn)行列表展示,它以列表的形式展示具體內(nèi)容,并且能夠根據(jù)數(shù)據(jù)的長(zhǎng)度自適應(yīng)顯示。列表的顯示需要3個(gè)元素。
1.ListVeiw。用來(lái)展示列表的View。
2. 適配器。用來(lái)把數(shù)據(jù)映射到ListView上的中介。
3. 數(shù)據(jù)。具體的將被映射的字符串、圖片、或者基本組件。
ListView 繪制的過(guò)程如下:首先,系統(tǒng)在繪制ListView 之前,將會(huì)先調(diào)用getCount方法來(lái)獲取Item 的個(gè)數(shù)。之后每繪制一個(gè)Item 就會(huì)調(diào)用getView 方法,在此方法內(nèi)就可以引用事先定義好的xml來(lái)確定顯示的效果并返回一個(gè)View對(duì)象作為一個(gè)Item 顯示出來(lái)。也正是在這個(gè)過(guò)程中完成了適配器的主要轉(zhuǎn)換功能,把數(shù)據(jù)和資源以開(kāi)發(fā)者想要的效果顯示出來(lái)。也正是getView 的重復(fù)調(diào)用,使得ListView 的使用更為簡(jiǎn)單和靈活。這兩個(gè)方法是自定ListView顯示效果中為重要的,同時(shí)只要重寫(xiě)好了前兩個(gè)方法,ListView就能完全按開(kāi)發(fā)者的要求顯示。而getltem和getltemld方法將會(huì)在調(diào)用ListView的響應(yīng)方法的時(shí)候被調(diào)用到。所以要保證ListView的各個(gè)方法有效的話(huà),這兩個(gè)方法也得重寫(xiě)。ListView作為一個(gè)數(shù)據(jù)顯示的機(jī)制,在用戶(hù)添加完SSID節(jié)點(diǎn)可以通過(guò)這種機(jī)制顯示出來(lái),同時(shí)還添加了刪除,修改按鈕及SSID序號(hào)。這些SSID節(jié)點(diǎn)作為wIFI漫游的搜索節(jié)點(diǎn),按照用戶(hù)的經(jīng)常使用的級(jí)別定義優(yōu)先順序。
2.1 SharedPreference實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)
Android 平臺(tái)給我們提供了一個(gè)SharedPreferences類(lèi),它是一個(gè)輕量級(jí)的存儲(chǔ)類(lèi),特別適合用于保存軟件配置參數(shù)。SharedPreferences是以鍵值對(duì)來(lái)存儲(chǔ)應(yīng)用程序的配置信息的一種方式,它只能存儲(chǔ)基本數(shù)據(jù)類(lèi)型。一個(gè)程序的配置文件僅可以在本應(yīng)用程序中使用,或者說(shuō)只能在同一個(gè)包內(nèi)使用,不能在不同的包之間使用。實(shí)際上SharedPreferences是采用了XML格式將數(shù)據(jù)存儲(chǔ)到設(shè)備中,在DDMS中的File Explorer中的/data/data/~ package name>/shares prefs目錄下。

因?yàn)閟haredPreferences是使用xml文件保存數(shù)據(jù),getSharedPreferences(name,mode)方法的個(gè)參數(shù)用于指定該文件的名稱(chēng),名稱(chēng)不用帶后綴,后綴會(huì)由Android自動(dòng)加上。如果希望SharedPreferences使用的xml文件能被其他應(yīng)用讀和寫(xiě),可以指定Context.M ODE—W ORLD— READABLE 和Context.MODE WORLD WRITEABI E權(quán)限。另外Activity還提供了另一個(gè)getPreferences(mode)方法操作SharedPreferences,這個(gè)方法默認(rèn)使用當(dāng)前類(lèi)不帶包名的類(lèi)名作為文件的名稱(chēng)。訪問(wèn)SharedPreferences中的數(shù)據(jù)代碼如下:

Long num — ssidvalues.getI ong(SSIDNUM ,O);如果訪問(wèn)其他應(yīng)用中的Preference,前提條件是該preference創(chuàng)建時(shí)指定了Context.MODE WORLDREADABLE 或者Context.MODE WORLDWRITEABLE權(quán)限。在此實(shí)現(xiàn)中是將數(shù)據(jù)存儲(chǔ)在用戶(hù)自己定義的SharedPreference文件中,用戶(hù)將SSID節(jié)點(diǎn)添加到用戶(hù)定義的SSIDINFO文件中。
2.2 3G WIFI無(wú)線(xiàn)漫游功能設(shè)計(jì)
在基于android系統(tǒng)手機(jī)中的wIFI和3G都有相應(yīng)的設(shè)置選項(xiàng),在WIFI設(shè)置關(guān)閉的情況下默認(rèn)通過(guò)3G 網(wǎng)絡(luò)連接上網(wǎng)。用戶(hù)會(huì)經(jīng)常去一些有wIFI熱點(diǎn)的地方,這些熱點(diǎn)是給用戶(hù)開(kāi)放的,可以通過(guò)WIFI網(wǎng)絡(luò)連接到互聯(lián)網(wǎng)。這些經(jīng)常用的AP節(jié)點(diǎn)就是用戶(hù)設(shè)置的SSID節(jié)點(diǎn)。
WIFI AP節(jié)點(diǎn)連接過(guò)程:
?、偎阉鬟^(guò)程。終端進(jìn)入wIFI后,首先搜索候選網(wǎng)絡(luò)的AP信息,AP搜索過(guò)程就是終端掃描信道獲取AP信息的過(guò)程,也叫AP掃描過(guò)程。在此過(guò)程中,終端在某個(gè)頻道上發(fā)出請(qǐng)求消息,然后等待AP回應(yīng),然后轉(zhuǎn)到下一個(gè)頻道。IEEE802.n標(biāo)準(zhǔn)規(guī)定,AP在收到終端發(fā)出的請(qǐng)求信息后,必須回復(fù)攜帶自身信息的包給終端,終端成功收到AP回復(fù)后,就能夠確知AP的存在并獲取妙的相關(guān)信息。
?、?過(guò)程。終端在發(fā)起切換連接上wIFI一個(gè)新的AP時(shí),需要通過(guò)AP的。在進(jìn)入階段后,AP先發(fā)送一個(gè)待驗(yàn)證的內(nèi)容片斷給終端,終端解析此內(nèi)容后將解析結(jié)果返回給AP,再判斷終端解析后的內(nèi)容是否正確,如果正確則通過(guò),否則失敗。3個(gè)子過(guò)程缺少一個(gè)過(guò)程都會(huì)導(dǎo)致此次失敗,因此保證了AP機(jī)制的可靠性。盡管這3個(gè)過(guò)程比較復(fù)雜,在終端與AP之間產(chǎn)生了多次的交互,然而這些過(guò)程并不占用太多的時(shí)間。
?、?重關(guān)聯(lián)過(guò)程。在經(jīng)過(guò)后,需要與連接上的AP進(jìn)行重關(guān)聯(lián),然后通過(guò)AP連接上網(wǎng)。在重關(guān)聯(lián)過(guò)程中,終端先發(fā)送重關(guān)聯(lián)請(qǐng)求幀給AP,該幀包含了終端一些信息,如終端所支持的數(shù)據(jù)比特率及終端將要進(jìn)行連接的AP在網(wǎng)絡(luò)中的SSID。在接收到請(qǐng)求后,AP處理請(qǐng)求并為該終端建立一條關(guān)聯(lián)ID號(hào)同時(shí)分配一部分存儲(chǔ)空間來(lái)存儲(chǔ)相關(guān)信息。然后AP向終端發(fā)送重關(guān)聯(lián)響應(yīng)來(lái)通終端關(guān)聯(lián)成功還是失敗,同時(shí)包含AP建立重關(guān)聯(lián)的相關(guān)信息。如果關(guān)聯(lián)成功,則終端可以使用此AP聯(lián)網(wǎng)并與其他已經(jīng)聯(lián)網(wǎng)的終端進(jìn)行通信了。
?、?地址配置。終端在連接上AP后,AP要給終端分配一個(gè)IP地址,使其通過(guò)IP地址連接上互聯(lián)網(wǎng)。
以上步驟是wIFI在熱點(diǎn)區(qū)域連接AP節(jié)點(diǎn)的過(guò)程。在android系統(tǒng)中wIFI如果設(shè)定為關(guān)閉即使是在有wIFI熱點(diǎn)區(qū)域也不會(huì)進(jìn)行搜索連接。為此我們添加了wIFI漫游過(guò)程。首先每隔一個(gè)固定間隔時(shí)間打開(kāi)wIFI設(shè)置,查找是否有wIFI熱點(diǎn),如果有就進(jìn)行以上的wIFI連接AP節(jié)點(diǎn)的過(guò)程,然后查找用戶(hù)設(shè)定的SSID節(jié)點(diǎn),查找到和用戶(hù)設(shè)定的一致的SSID節(jié)點(diǎn)則進(jìn)行網(wǎng)絡(luò)連接。網(wǎng)絡(luò)連接終端可以發(fā)起切換,在與3G 網(wǎng)絡(luò)斷開(kāi)后使用存儲(chǔ)的信息與wIFI的AP建立連接,通過(guò)wIFI上網(wǎng),從3G 網(wǎng)絡(luò)切換到WIFI網(wǎng)絡(luò)連接到Internet。
2.3 WIFI漫游功能模塊框圖
為了能夠在間隔固定時(shí)間查詢(xún)是否有wIFI熱點(diǎn)區(qū)域,特啟動(dòng)了一個(gè)漫游線(xiàn)程,該線(xiàn)程主要完成了如果已經(jīng)在wIFI熱點(diǎn)區(qū)域則打開(kāi)wIFI設(shè)置,將wIFI的AP節(jié)點(diǎn)與用戶(hù)設(shè)定的SSID進(jìn)行比較如果為設(shè)定的SSID節(jié)點(diǎn)則進(jìn)行連接,否則即使在熱點(diǎn)區(qū)域仍然用3G 網(wǎng)絡(luò)連接。
在3G連接的情況下實(shí)現(xiàn)探測(cè)wIFI節(jié)點(diǎn)流程圖,如果探測(cè)到的SSID在設(shè)定的I ist列表中,將3G關(guān)閉并自動(dòng)連接到設(shè)定的SSID,實(shí)現(xiàn)流程圖如圖1所示。

3 結(jié)束語(yǔ)
本文提出了一種基于Android系統(tǒng)終端控制上實(shí)現(xiàn)3G到WIFI以及WIFI到3G 的無(wú)線(xiàn)漫游機(jī)制,分析了3G到WIFI的連接、、得到AP信息的過(guò)程。
該機(jī)制的實(shí)現(xiàn)還主要用到了android中的ListView用來(lái)進(jìn)行數(shù)據(jù)顯示,利用了adapter實(shí)現(xiàn)了IAstView的數(shù)據(jù)傳輸,以及利用SharedPreference實(shí)現(xiàn)簡(jiǎn)單數(shù)據(jù)存儲(chǔ)。該漫游機(jī)制的實(shí)現(xiàn)方便了用戶(hù)使用,減少了用戶(hù)使用3G網(wǎng)絡(luò)流量的費(fèi)用。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 工業(yè)5G技術(shù)在智能制造中的應(yīng)用與實(shí)踐解析2025/12/31 10:57:21
- 工業(yè)以太網(wǎng)交換機(jī)選型與現(xiàn)場(chǎng)應(yīng)用技術(shù)指南2025/12/18 10:48:14
- 無(wú)線(xiàn)傳輸電路基礎(chǔ),射頻前端設(shè)計(jì)、天線(xiàn)匹配與鏈路預(yù)算計(jì)算2025/10/27 13:55:50
- ASK 解調(diào)的核心要點(diǎn)與實(shí)現(xiàn)方式2025/9/5 16:46:17
- 雙偶極子天線(xiàn):結(jié)構(gòu)、特性與應(yīng)用全解析2025/9/3 10:29:21
- 編碼器的工作原理及作用1
- 超強(qiáng)整理!PCB設(shè)計(jì)之電流與線(xiàn)寬的關(guān)系2
- 三星(SAMSUNG)貼片電容規(guī)格對(duì)照表3
- 電腦藍(lán)屏代碼大全4
- 國(guó)標(biāo)委發(fā)布《電動(dòng)汽車(chē)安全要求第3部分:人員觸電防護(hù)》第1號(hào)修改單5
- 通俗易懂談上拉電阻與下拉電阻6
- 繼電器的工作原理以及驅(qū)動(dòng)電路7
- 電容單位8
- 跟我學(xué)51單片機(jī)(三):?jiǎn)纹瑱C(jī)串口通信實(shí)例9
- 一種三極管開(kāi)關(guān)電路設(shè)計(jì)10
- 車(chē)載PCB設(shè)計(jì)核心規(guī)范(車(chē)規(guī)級(jí))
- LDO輸出精度對(duì)系統(tǒng)的影響
- MOSFET結(jié)溫Tj對(duì)壽命的影響
- 電感的基本原理與主要參數(shù)解析
- 如何為您的音頻系統(tǒng)選擇合適的濾波器類(lèi)型與參數(shù)?
- PCB接地系統(tǒng)設(shè)計(jì)核心指南
- 熱設(shè)計(jì)決定壽命:電源散熱分析與優(yōu)化方法
- 連接器接觸件材料對(duì)性能的影響
- 開(kāi)關(guān)頻率對(duì)電源設(shè)計(jì)的影響
- MOSFET漏源擊穿電壓Vds解析









