国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Android系統(tǒng)定時(shí)開(kāi)關(guān)飛行模式代碼的實(shí)現(xiàn)

2012-04-29 00:44:03張亮
電腦知識(shí)與技術(shù) 2012年32期
關(guān)鍵詞:編程

張亮

摘要:基于Android操作系統(tǒng)的智能手機(jī)目前在市場(chǎng)上的占有率排名第一,然而,Android系統(tǒng)官方并沒(méi)有提供定時(shí)自動(dòng)開(kāi)關(guān)機(jī)的功能,并且,很多品牌的Android手機(jī)并不具備關(guān)機(jī)鬧鐘功能,因此,很多人使用打開(kāi)飛行模式來(lái)取代關(guān)機(jī)操作。該文介紹了一種編程方法,可以根據(jù)設(shè)定的時(shí)間自動(dòng)打開(kāi)或關(guān)閉飛行模式,在一定程度上可以解決對(duì)自動(dòng)開(kāi)關(guān)機(jī)功能的需求。

關(guān)鍵詞:Android;飛行模式;編程

中圖分類號(hào):TN929 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2012)32-7743-02

Android操作系統(tǒng)是Google公司于2007年發(fā)布的一種智能手機(jī)操作平臺(tái),它是一個(gè)由操作系統(tǒng)、中間件、用戶友好界面和應(yīng)用軟件組成的,全面整合的移動(dòng)軟件平臺(tái)。自推出以來(lái),Android受到了業(yè)界的廣泛關(guān)注,基于Android的智能手機(jī)的發(fā)展也極其迅猛,目前在智能手機(jī)的市場(chǎng)占有率已經(jīng)穩(wěn)居第一。然而遺憾的是,Android系統(tǒng)并沒(méi)有提供定時(shí)自動(dòng)開(kāi)關(guān)機(jī)功能,因此,習(xí)慣夜晚關(guān)機(jī)的用戶必須每日晚上手動(dòng)進(jìn)行關(guān)機(jī)操作,次日早晨再手動(dòng)開(kāi)機(jī),比較繁瑣。另外,很多廠商開(kāi)發(fā)的基于Android系統(tǒng)的手機(jī)并不支持關(guān)機(jī)鬧鐘功能,一旦關(guān)機(jī)后,設(shè)定的鬧鐘就不再起作用,給用戶帶來(lái)很多不便。因此,越來(lái)越多的用戶目前傾向使用啟用飛行模式來(lái)代替關(guān)機(jī)操作,因?yàn)樵陲w行模式下,鬧鐘是可用的。但系統(tǒng)同樣沒(méi)有提供定時(shí)自動(dòng)開(kāi)關(guān)飛行模式的設(shè)置選項(xiàng),該文的目的就是介紹如何自主編程開(kāi)發(fā)這一功能。

1飛行模式簡(jiǎn)介

手機(jī)的飛行模式又叫航空模式、航班模式。飛行模式打開(kāi)后,將關(guān)閉手機(jī)的通信功能,即不能接打電話發(fā)短信,與基站沒(méi)有信號(hào)聯(lián)系,也不試圖聯(lián)系基站。同時(shí)手機(jī)的移動(dòng)數(shù)據(jù)網(wǎng)絡(luò)和WIFI模塊也會(huì)被關(guān)閉。因?yàn)槭謾C(jī)信號(hào)會(huì)干擾飛機(jī)上的電子設(shè)備,所以飛機(jī)上不允許打開(kāi)手機(jī),而在飛行模式下關(guān)閉了手機(jī)信號(hào)的有關(guān)功能,手機(jī)可以開(kāi)著繼續(xù)使用其它功能,如查看電話本、欣賞手機(jī)上的文章、電影等。所以叫這種模式被稱為飛行模式。因?yàn)槭謾C(jī)的電量很大部分都消耗在無(wú)線信號(hào)通信上,飛行模式下關(guān)閉了所有無(wú)線信號(hào)通信,因此非常省電。

2代碼實(shí)現(xiàn)

本系統(tǒng)手機(jī)客戶端開(kāi)發(fā)環(huán)境為Android2.3,采用JDK1.6版和Eclipse3.7來(lái)編程實(shí)現(xiàn)。

代碼主要由兩個(gè)類組成:AirplaneModeSwitchActivity類和AlarmReceiver類。其中AirplaneModeSwitchActivity類是Activity類的子類,用來(lái)實(shí)現(xiàn)程序主界面,主要用來(lái)設(shè)置定時(shí)開(kāi)關(guān)的時(shí)間和啟動(dòng)關(guān)閉程序等功能。AlarmReceiver類是BroadcastReceiver類的子類,主要用來(lái)響應(yīng)AlarmManager發(fā)出的廣播intent,并執(zhí)行打開(kāi)或關(guān)閉飛行模式的代碼。

由于打開(kāi)和關(guān)閉飛行模式的代碼流程幾乎一致,下面以打開(kāi)飛行模式為例介紹一下具體的編程步驟:

1)在主界面上設(shè)置TimePicker控件來(lái)設(shè)置打開(kāi)飛行模式的時(shí)間。TimePicker繼承了FrameLayout類,可以向用戶顯示一天中的時(shí)間(可以為24小時(shí),也可以為AM/PM制),并允許用戶進(jìn)行選擇。

2)通過(guò)GregorianCalendar類的默認(rèn)構(gòu)造方法取得當(dāng)前系統(tǒng)的時(shí)間,并利用當(dāng)前時(shí)間的年月日加上TimePicker控件中設(shè)置的小時(shí)和分鐘構(gòu)造出打開(kāi)飛行模式的時(shí)間。需要特別注意的是,此時(shí)需要比較此時(shí)間和當(dāng)前系統(tǒng)時(shí)間的先后,如何當(dāng)前系統(tǒng)時(shí)間已經(jīng)晚于此時(shí)間,說(shuō)明用戶設(shè)置的是第二天這個(gè)時(shí)候自動(dòng)打開(kāi)飛行模式,因此需要將此時(shí)間的日期加1。

3)設(shè)置Intent和PendingIntent對(duì)象,Intent一般是用作Activity、Sercvice、BroadcastReceiver之間傳遞數(shù)據(jù),PendingIntent可以看作是對(duì)Intent的包裝,通常通過(guò)getActivity,getBroadcast,getService來(lái)得到pendingintent的實(shí)例,當(dāng)前activity并不能馬上啟動(dòng)它所包含的intent,而是在外部執(zhí)行pendingintent時(shí),來(lái)調(diào)用封裝的intent的。我們這里設(shè)置的Intnent指向AlarmReceiver類,用來(lái)當(dāng)AlarmManager設(shè)定時(shí)間到達(dá)的時(shí)候發(fā)出廣播。

4)設(shè)置AlarmManager對(duì)象。AlarmManager的作用是:在特定的時(shí)刻為我們廣播一個(gè)指定的Intent。簡(jiǎn)單的說(shuō)就是我們?cè)O(shè)定一個(gè)時(shí)間,然后在該時(shí)間到來(lái)時(shí)候,AlarmManager為我們廣播一個(gè)我們?cè)O(shè)定的Intent。我們通過(guò)該對(duì)象的setRepeating方法來(lái)設(shè)置一個(gè)重復(fù)的定時(shí)器,重復(fù)時(shí)間為24小時(shí),也就是每天相同的時(shí)間打開(kāi)飛行模式。需要注意的是,我們開(kāi)始時(shí)嘗試使用Timer定時(shí)器類來(lái)實(shí)現(xiàn)相同的功能,但經(jīng)過(guò)實(shí)踐發(fā)現(xiàn),Timer類定時(shí)器在手機(jī)進(jìn)入待機(jī)狀態(tài)時(shí)就不再起作用,因此不適合用在這樣的場(chǎng)合使用。

5)當(dāng)定時(shí)器發(fā)出廣播后,由AlarmReceiver類負(fù)責(zé)處理。要實(shí)現(xiàn)這一點(diǎn),必須在項(xiàng)目的AndroidManifest.xml文件中加入代碼進(jìn)行說(shuō)明。AlarmReceiver類是BroadcastReceiver類的子類,該類對(duì)父類的onReceive方法進(jìn)行了覆蓋,自定義了當(dāng)接收到廣播時(shí)進(jìn)行的處理代碼。在這里通過(guò)Settings.System.putString(cr,Settings.System.AIRPLANE_MODE_ON,"0")方法就可以將飛行模式打開(kāi),之后通過(guò)廣播Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED)通知系統(tǒng)飛行模式的狀態(tài)已經(jīng)發(fā)生了改變。

3結(jié)束語(yǔ)

Android系統(tǒng)作為目前最為流行的智能手機(jī)操作系統(tǒng),在各方面的性能都比較優(yōu)秀,然而,缺乏對(duì)自動(dòng)開(kāi)關(guān)機(jī)功能和關(guān)機(jī)鬧鐘功能的支持是一大遺憾。該文分析飛行模式的原理,探討了用飛行模式取代關(guān)機(jī)的可能性,并給出了實(shí)現(xiàn)定時(shí)自動(dòng)開(kāi)關(guān)飛行模式的代碼實(shí)現(xiàn),希望對(duì)Android系統(tǒng)的研究產(chǎn)生一定的參考作用。

參考文獻(xiàn):

[1]郭蕊.基于Android平臺(tái)的GPS定位系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].北京工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2012,11(2).

[2]倪紅軍.基于Android平臺(tái)的移動(dòng)終端GPS研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012(5).

[3]百度百科.GPS工作原理[EB/OL].http://baike.baidu.com/view/7773.htm.

猜你喜歡
編程
編程,是一種態(tài)度
元征X-431實(shí)測(cè):奔馳發(fā)動(dòng)機(jī)編程
編程小能手
紡織機(jī)上誕生的編程
宏程序編程的幾種應(yīng)用
數(shù)據(jù)庫(kù)中VB編程的應(yīng)用
河南科技(2014年3期)2014-02-27 14:05:37
共和县| 九龙县| 若羌县| 桃园市| 琼中| 西昌市| 随州市| 苏尼特左旗| 沈阳市| 松潘县| 浙江省| 丹江口市| 论坛| 汾阳市| 济源市| 泾阳县| 靖边县| 开远市| 广河县| 曲麻莱县| 芦山县| 临湘市| 南漳县| 罗源县| 客服| 遵义市| 余江县| 任丘市| 麻栗坡县| 衡东县| 沙河市| 桂阳县| 额尔古纳市| 融水| 鹿邑县| 乌兰浩特市| 会宁县| 静乐县| 陈巴尔虎旗| 金华市| 桐乡市|