




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、千鋒千鋒3G嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心 Android開發(fā)教程之電源管理相關(guān)應(yīng)用技開發(fā)教程之電源管理相關(guān)應(yīng)用技 巧巧 Android電源管理應(yīng)用層的使用電源管理應(yīng)用層的使用 Android Framework層面層面 Kernel層層 提供給提供給Android Framework層的層的proc 電源管理之Wake lock 在在Kernel層使用層使用wake lock 1 Android開發(fā)教程之電源管理相關(guān)應(yīng)用技 巧 千鋒千鋒3G嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研
2、發(fā)中心 簡(jiǎn)介 對(duì)于剛剛接觸Android操作系統(tǒng)的朋友來說, 他們對(duì)這一開源的手機(jī)操作系統(tǒng)所帶來的 功能深深的吸引著。我們?cè)谶@篇文章中就 通過對(duì)Android電源管理的相關(guān)概念的解讀, 來對(duì)這一系統(tǒng)進(jìn)行深入的了解。 接下來我們從Java應(yīng)用層面, Android framework層面, Linux內(nèi)核層面分別進(jìn)行詳 細(xì)的討論: 2 Android開發(fā)教程之電源管理相關(guān)應(yīng)用技 巧 千鋒千鋒3G嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心 www.mobiletrain
3、.org Android開發(fā)教程之電源管理應(yīng)用層的使用開發(fā)教程之電源管理應(yīng)用層的使用 Android提供了現(xiàn)成android.os.PowerManager 類,該類用于控制設(shè)備的電源狀態(tài)的切換. 該類對(duì)外有三個(gè)接口函數(shù): 1.void goToSleep(long time); /強(qiáng)制設(shè)備進(jìn)入Sleep狀態(tài) Note: 嘗試在應(yīng)用層調(diào)用該函數(shù),卻不能成功,出 現(xiàn)的錯(cuò)誤好象是權(quán)限不夠, 但在Framework下 面的Service里調(diào)用是可以的. 3 Android開發(fā)教程之電源管理相關(guān)應(yīng)用技 巧 千鋒千鋒3G嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心 www.embedtrai
4、 Android開發(fā)教程開發(fā)教程 2.newWakeLock(int flags, String tag);/取得相應(yīng)層次的鎖 flags參數(shù)說明: 3.PARTIAL_WAKE_LOCK: Screen off, keyboard light off 4.SCREEN_DIM_WAKE_LOCK: screen dim, keyboard light off 5.SCREEN_BRIGHT_WAKE_LOCK: screen bright, keyboard light off 6.FULL_WAKE_LOCK: screen bright,
5、 keyboard bright ACQUIRE_CAUSES_WAKEUP: 一旦有請(qǐng)求鎖時(shí)強(qiáng)制打開 Screen和keyboard light ON_AFTER_RELEASE: 在釋放鎖時(shí)reset activity timer Note: 4 Android開發(fā)教程之電源管理相關(guān)應(yīng)用技 巧 千鋒千鋒3G嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心 Android開發(fā)教程開發(fā)教程 如果申請(qǐng)了partial wakelock,那么即使按Power鍵,系統(tǒng)也不會(huì)進(jìn) Sleep,如Music播放時(shí) 如果申
6、請(qǐng)了其它的wakelocks,按Power鍵,系統(tǒng)還是會(huì)進(jìn) Sleep 7.void userActivity(long when, boolean noChangeLights); /User activity事件發(fā)生,設(shè)備會(huì)被切換到Full on的狀態(tài), 同時(shí)Reset Screen off timer. 8.Sample code: 9.PowerManager pm = (PowerManager)getSystemService (Context.POWER_SERVICE); 5 Android開發(fā)教程之電源管理相關(guān)應(yīng)用技 巧 千鋒千鋒3G嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動(dòng)互聯(lián)
7、網(wǎng)技術(shù)研發(fā)中心 Android開發(fā)教程開發(fā)教程 10.PowerManager.WakeLock wl = pm.newWakeLock (PowerManager.SCREEN_DIM_WAKE_LOCK, “My Tag”); 11.wl.acquire(); 12. 13.wl.release(); Note: 1.在使用以上函數(shù)的應(yīng)用程序中,必須在其 Manifest.xml文件中加入下面的權(quán)限: 14. 6 Android開發(fā)教程之電源管理相關(guān)應(yīng)用技 巧 千鋒千鋒3G嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動(dòng)互
8、聯(lián)網(wǎng)技術(shù)研發(fā)中心 Android開發(fā)教程開發(fā)教程 15. 2. 所有的鎖必須成對(duì)的使用,如果申請(qǐng) 了而沒有及時(shí)釋放會(huì)造成系統(tǒng)故障.如申請(qǐng) 了partial wakelock,而沒有及時(shí)釋放,那系統(tǒng) 就永遠(yuǎn)進(jìn)不了Sleep模式. 7 Android開發(fā)教程之電源管理相關(guān)應(yīng)用技 巧 千鋒千鋒3G嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心 Android開發(fā)教程之開發(fā)教程之Framework層層 面面 其主要代碼文件如下: 16.f
9、rameworksbasecorejavaandroidos PowerManager.java 17.frameworksbaseservicesjavacomandroidserve r PowerManagerService.java 18.frameworksbasecorejavaandroidosPower.java 19.frameworksbasecorejniandroid_os_power.cpp 20.hardwarelibhardwarepowerpower.c 8 Android開發(fā)教程之電源管理相關(guān)應(yīng)用技 巧 千鋒千鋒3G嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動(dòng)互聯(lián)網(wǎng)
10、技術(shù)研發(fā)中心 Android開發(fā)教程開發(fā)教程 其中PowerManagerService.java是核心, Power.java 提供底層的函數(shù)接口,與JNI層進(jìn)行交互, JNI層的代碼 主要在文件android_os_Power.cpp中,與Linux kernel 交互是通過Power.c來實(shí)現(xiàn)的, Android電源管理跟 Kernel的交互主要是通過sys文件的方式來實(shí)現(xiàn)的,具 體請(qǐng)參考Kernel層的介紹. 這一層的功能相對(duì)比較復(fù)雜,比如系統(tǒng)狀態(tài)的切 換,背光的調(diào)節(jié)及開關(guān),Wake Lock的申請(qǐng)和釋放等等
11、, 但這一層跟硬件平臺(tái)無(wú)關(guān),而且由Google負(fù)責(zé)維護(hù),問 題相對(duì)會(huì)少一些,有興趣的朋友可以自己查看相關(guān)的 代碼. 9 Android開發(fā)教程之電源管理相關(guān)應(yīng)用技 巧 千鋒千鋒3G嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心 Android開發(fā)教程之開發(fā)教程之Kernel層層 其主要代碼在下列位置: 21.drivers/android/power.c 其對(duì)Kernel提供的接口函數(shù)有 22.EXPORT_SYMBOL(android_init_suspend_lock); /初始化Suspend loc
12、k,在使用前必須做初始化 23.EXPORT_SYMBOL(android_uninit_suspend_lock); /釋放suspend lock相關(guān)的資源 24.EXPORT_SYMBOL(android_lock_suspend); /申請(qǐng)lock,必須調(diào)用相應(yīng)的unlock來釋放它 25.EXPORT_SYMBOL(android_lock_suspend_auto_expire); 10 Android開發(fā)教程之電源管理相關(guān)應(yīng)用技 巧 千鋒千鋒3G嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心
13、Android開發(fā)教程開發(fā)教程 /申請(qǐng)partial wakelock, 定時(shí)時(shí)間到后會(huì)自動(dòng)釋放 26.EXPORT_SYMBOL(android_unlock_suspend); / 釋放lock 27.EXPORT_SYMBOL(android_power_wakeup); / 喚醒系統(tǒng)到on 28.EXPORT_SYMBOL(android_register_early_suspend); /注冊(cè)early suspend的驅(qū)動(dòng) 29.EXPORT_SYMBOL(android_unregister_early_suspen d); /取消已經(jīng)注冊(cè)的early suspend的驅(qū)動(dòng) 11
14、 Android開發(fā)教程之電源管理相關(guān)應(yīng)用技 巧 千鋒千鋒3G嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心 提供給提供給Android Framework層的層的proc文件文件 30./sys/android_power/acquire_partial_wake_lock /申請(qǐng)partial wake lock 31./sys/android_power/acquire_full_wake_lock /申請(qǐng)full wake lock 32./sys/android_power/release_wak
15、e_lock /釋放相應(yīng)的wake lock 33./sys/android_power/request_state /請(qǐng)求改變系統(tǒng)狀態(tài),進(jìn)standby和回到wakeup兩種 狀態(tài) 34./sys/android_power/state /指示當(dāng)前系統(tǒng)的 狀態(tài) 12 Android開發(fā)教程之電源管理相關(guān)應(yīng)用技 巧 千鋒千鋒3G嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心 電源管理之Wake lock Android電源管理主要是通過Wake lock來實(shí)現(xiàn)的,在最 底層主要是通過如下三個(gè)隊(duì)列來實(shí)現(xiàn)其管理
16、: 35.static LIST_HEAD(g_inactive_locks); 36.static LIST_HEAD(g_active_partial_wake_locks); 37.static LIST_HEAD(g_active_full_wake_locks); 所有初始化后的lock都會(huì)被插入到g_inactive_locks 的隊(duì)列中,而當(dāng)前活動(dòng)的partial wake lock都會(huì)被插入到 g_active_partial_wake_locks隊(duì)列中, 活動(dòng)的full wake lock 被插入到g_active_full_wake_locks隊(duì)列中, 所有的partial
17、 wake lock 和full wake lock在過期后或unlock后都會(huì)被移 到inactive的隊(duì)列,等待下次的調(diào)用. 13 Android開發(fā)教程之電源管理相關(guān)應(yīng)用技 巧 千鋒千鋒3G嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動(dòng)互聯(lián)網(wǎng)技術(shù)研發(fā)中心 Android開發(fā)教程之在開發(fā)教程之在Kernel層使用層使用wake lock 1. 調(diào)用函數(shù)android_init_suspend_lock初始化一個(gè)wake lock 2. 調(diào)用相關(guān)申請(qǐng)lock的函數(shù)android_lock_suspend 或 android_lock_suspend_auto_expire請(qǐng)求lock,這里只能申請(qǐng)partial wake lock, 如果要申請(qǐng)F(tuán)ull wake lock,則需要調(diào)用函數(shù) android_lock_partial_suspend_auto_e
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- (高清版)DB13∕T 2948-2019 公路橋面鋪裝層維修設(shè)計(jì)與施工技術(shù)規(guī)范
- 2025合同范本員工績(jī)效考核注意事項(xiàng)協(xié)議
- 2025年鐵路旅客意外保險(xiǎn)合同范本
- 員工股份期權(quán)激勵(lì)計(jì)劃合同
- 九年級(jí)英語(yǔ)人教新目標(biāo)版教案上冊(cè) unit 1《how do you study for a test》period 1 section a(1a-2c)教學(xué)設(shè)計(jì)
- 身邊的環(huán)保故事周記寫作指導(dǎo)12篇范文
- 一件感人的事跡抒情作文(9篇)
- 電子競(jìng)技產(chǎn)業(yè)發(fā)展研究
- 餐飲行業(yè)食材采購(gòu)與食品安全保障作業(yè)指導(dǎo)書
- 特別聲明工作證明函及免責(zé)條款說明(5篇)
- 安徽省合肥市包河區(qū)2024屆八年級(jí)數(shù)學(xué)第二學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)試題含解析
- 健身房安全知識(shí)培訓(xùn)
- 《誡子書》同步訓(xùn)練 課堂達(dá)標(biāo) 考點(diǎn)過關(guān)(四套)
- 策劃視頻大賽策劃方案
- 深度學(xué)習(xí)技術(shù)在醫(yī)學(xué)圖像識(shí)別中的應(yīng)用
- 《卡諾循環(huán)演示》課件
- 《如何閱讀文獻(xiàn)》課件
- 國(guó)開電大操作系統(tǒng)-Linux系統(tǒng)使用-實(shí)驗(yàn)報(bào)告
- 說課IP地址課件
- 2022版消毒技術(shù)規(guī)范(護(hù)理部)
- 大班拼音活動(dòng)《6個(gè)單韻母》課件
評(píng)論
0/150
提交評(píng)論