Android電源管理,低電量報警
Source code:
package com.inanwong.main; import java.util.Timer; import java.util.TimerTask; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.util.Log; public class PhoneBatTask { private static final int TIME_SPACE_DELAY = 1000; public static final int TIME_SPACE_PERIOD = 1800 * 1000; public static final int PB_LOWFLAG = 15; private Context context = null; private int intLevel = 100; private int intScale = 100; private int timeInterval = TIME_SPACE_PERIOD; private int lowFlag = PB_LOWFLAG; private boolean isStartRegister = false; private TimerTask batTask = new TimerTask() { @Override public void run() { if (!isStartRegister) { timer.cancel(); return; } disposePower(intLevel, intScale); } }; private final Timer timer = new Timer(); /* create BroadcastReceiver */ private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (Intent.ACTION_BATTERY_CHANGED.equals(action)) { intLevel = intent.getIntExtra("level", 0); intScale = intent.getIntExtra("scale", 100); } } }; private static final String TAG = "[PhoneBatTask]"; PhoneBatTask() { // TODO Auto-generated constructor stub } public PhoneBatTask(Context context, int timeInterval, int lowFlag) { this.context = context; this.timeInterval = timeInterval; this.lowFlag = lowFlag; } public boolean registerBatterBroadCast() { boolean flag = false; try { this.context.registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); flag = true; isStartRegister = true; timer.schedule(batTask, TIME_SPACE_DELAY, timeInterval); } catch (Exception e) { e.printStackTrace(); } Log.i(TAG, toString()); return flag; } @SuppressWarnings("unused") private boolean unregisterBatterBroadCast() { boolean flag = false; try { this.context.unregisterReceiver(mBatteryInfoReceiver); flag = true; isStartRegister = false; timer.cancel(); } catch (Exception e) { e.printStackTrace(); } return flag; } public synchronized void disposePower(int intLevel, int intScale) { if ((intLevel * 100) < (lowFlag * intScale)) { // do sth for power low ... } Log.i(TAG, "intLevel = " + intLevel + "; intScale = " + intScale); } public void setTimeInterval(int timeInterval) { if (this.timeInterval == timeInterval) { return; } if (isStartRegister) { this.timeInterval = timeInterval; timer.cancel(); batTask.cancel(); timer.schedule(batTask, TIME_SPACE_DELAY, timeInterval); } Log.i(TAG, toString()); } public void setLowFlag(int lowFlag) { this.lowFlag = lowFlag; } @Override public String toString() { // TODO Auto-generated method stub StringBuilder b = new StringBuilder(); b.append("{ timeInterval="); b.append(timeInterval); b.append(" lowFlag="); b.append(lowFlag); b.append(" intLevel="); b.append(intLevel); b.append(" intScale="); b.append(intScale); b.append(" }"); return b.toString(); } }
相關推薦
Android電源管理,低電量報警
Source code: package com.inanwong.main; import java.util.Timer; import java.util.TimerTask; import android.content.BroadcastReceiver; i
android之PowerManager 與電源管理,解決滅屏狀態下來簡訊螢幕不會點亮問題
可解決滅屏狀態下來簡訊螢幕不會點亮問題 PowerManager這個類主要是用來控制電源狀態的. 通過使用該類提供的api可以控制電池的待機時間,一般情況下不要使用。如果確實需要使用,那
Android電源管理-休眠簡要分析
轉自https://www.cnblogs.com/tangdoudou/p/3807936.html 工作需要,需要對這一塊深入學習。故在此做一點分析記錄,存疑解惑。 一、開篇 1.Linux 描述的電源狀態 - On(on)
Android電源管理之三:PowerManager.WakeLock原始碼詳讀
PowerManager.WakeLock 有加鎖和解鎖兩種狀態,加鎖的方式有兩種,一種是永久的鎖,這樣的鎖除非顯式的放開,是不會解鎖的,所以這種鎖用起來要非常的小心。第二種鎖是超時鎖,這種鎖會在鎖住後一段時間自動解鎖。 在建立了PowerManager.W
Android 電源管理 -- wakelock機制
PowerManager.WakeLock 有加鎖和解鎖兩種狀態,加鎖的方式有兩種: 第一種是永久的鎖住,這樣的鎖除非顯式的放開,否則是不會解鎖的,所以這種鎖用起來要非常的小心。 第二種鎖是超時鎖,這種鎖會在鎖住後一段時間解鎖。 在建立了 PowerManager.WakeLock 後,有
Android電源管理系列之PowerManagerService(二)
WakeLock機制 PowerManager.WakeLock 為了延長電池的使用壽命,Android裝置會在一段時間後使螢幕變暗,然後關閉螢幕顯示,直至停止CPU進入休眠。WakeLock是Android提供的喚醒鎖機制,用來保持CPU執行或避免螢幕變暗/關閉以及避免鍵盤背光燈熄滅
Android電源管理系列之PowerManagerService(一)
PowerManagerService 提供Android系統的電源管理服務,主要功能是控制系統待機狀態,螢幕顯示,亮度調節,光線/距離感測器的控制等。 相關程式碼在以下檔案中 frameworks/base/services/java/com/androi
Android電源管理機制剖析
Android 的電源管理也是很重要的一部分。比如在待機的時候關掉不用的裝置,timeout之後的螢幕和鍵盤背光的關閉,使用者操作的時候該開啟多少裝置等等,這些都直接關係到產品的待機時間,以及使用者體驗。 一,電源管理相關檔案
android 電源管理驅動
g_workqueue = create_singlethread_workqueue("cvt_mid_power_adcwq"); INIT_WORK(&g_work, adc_work_func); alarm_init(&g_alarm, ANDROID_ALARM_ELAPSE
android cookie管理,解決網頁訪問不了的問題
在做專案中,不免會有部分專案是要管理cookie, 1、登入成功後,把cookie儲存起來,我專案中就把cookie儲存到Application裡: 獲取cookie /** * 獲取標準 Coo
關於android電源管理監聽事件
原文地址:http://www.pocketdigi.com/20140608/1341.html(尊重勞動成果!) 當你在更改後臺更新頻率來減少這些更新對電池壽命的影響時,檢查當前電量和充電狀態是一個好的開始。 電池壽命通過剩餘電量和充電狀態來影響應用更新的執行。當用交
Android9.0 P 電源管理(android電量優化功能改進)
Android 9(API 28)電源管理 在最近幾個android版本中已存在的電量優化功能基礎上,Android 9 引入了一些新功能來持續改進裝置電源管理,以確保將系統資源提供給最需要它們的應用
支援動態調頻,AXP228電源管理,預留鋰電池介面,內建充放電電路及電量計iTOP-4418開發板
iTOP-4418開發板 支援動態調頻,AXP228電源管理,預留鋰電池介面,內建充放電電路及電量計 核心板320PIN全引出,
源代碼管理工具-(核心算法:檢查數據優先級,高前置,低壓縮)
我不 -c adg 編輯 編輯狀態 usually git pull crypt 地面 GIThttp://blog.csdn.net/weishinexk/article/details/51454167 一. git 概述 1. git 簡介? 什麽是git?
當我們按下電源鍵,Android 究竟做了些什麽?
git 實踐 系統服務 深度 希望 load() 特定 機器 父進程 歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐幹貨哦~ 本文由goo發表於雲+社區專欄 相信我們對Android系統都不陌生,而Android系統博大精深,被各種各樣的智能設備承載的同時,我們會否好
Android 許可權管理(那些需要申請許可權,哪些不需要申請許可權)
6.0許可權的基本知識,以下是需要單獨申請的許可權,共分為9組,每組只要有一個許可權申請成功了,就預設整組許可權都可以使用了。 group:android.permission-group.CONTACTS permission:android.perm
當我們按下電源鍵,Android 究竟做了些什麼?
歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~ 本文由goo發表於雲+社群專欄 相信我們對Android系統都不陌生,而Android系統博大精深,被各種各樣的智慧裝置承載的同時,我們會否好奇過,如此複雜的Android究竟是怎麼運作起來的呢?
實戰Android:通過BroadcastReceiver監聽Home,電源Power,和音量變化Volume鍵
上一個例子是採用AccessibilityService來實現按鍵的監聽。這次我們採用BroadcastReceiver來完成按鍵的監聽。 缺點:我嘗試了一下,暫時還不知道如何停止按 鍵的預設行為,比如我確實監聽到了電源按鍵,但卻沒法阻止此刻螢幕變黑的行為。先在這記下。以後
關於Android 6.x 及以上許可權管理,閃退
原因1. 沒有授權檢查; 原因2. 許可權檢查與宣告不匹配 例如: 近期,維護一個接手的App,由於歷史原因,沒有許可權管理,直接導致在高版本的Android上閃退。 直接匯入了以前專案使用的以下程式碼 public static String[] check
電源管理之android核心suspend to disk的實現(九)--tuxonice實現方案
完成在標準核心基礎上的android系統的suspend to disk後,又採取了tuxonice補丁的方式進行比較,發現由於壓縮的緣故,速度有所提高10s左右。 該範方案的實現我是根據我的一位離職的同事寫學習筆記進行測試,實驗證明是可行的,以下部分程式的講解我也直接進