0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何判斷電池的剩余電量及充電狀態(tài)

Android編程精選 ? 來(lái)源:稀土掘金技術(shù)社區(qū) ? 2023-07-24 16:12 ? 次閱讀

在現(xiàn)如今的開發(fā)中, 電量消耗是一個(gè)應(yīng)用運(yùn)行效果的一個(gè)重要的衡量標(biāo)準(zhǔn),尤其是直播,運(yùn)動(dòng)應(yīng)用。設(shè)備中的每個(gè)硬件模塊都會(huì)消耗電量。電量的最大消費(fèi)者是CPU,但這只是系統(tǒng)的一個(gè)方面。一個(gè)編寫良好的應(yīng)用需要謹(jǐn)慎地使用電能。用戶往往會(huì)刪除耗電量大的應(yīng)用。除CPU外,耗電量高、值得關(guān)注的硬件模塊還包括網(wǎng)絡(luò)硬件、藍(lán)牙、GPS、麥克風(fēng)、加速計(jì)、攝像頭、揚(yáng)聲器和屏幕。如何降低電量的消耗,是延長(zhǎng)使用時(shí)間的關(guān)鍵。我們要關(guān)注以下:

判斷電池的剩余電量及充電狀態(tài)

如何分析電源

如何在 iOS 應(yīng)用中分析電源, CPU 和資源的使用

1. CPU

不論用戶是否正在直接使用, CPU 都是應(yīng)用所使用的主要硬件, 在后臺(tái)操作和處理推送通知時(shí), 應(yīng)用仍然會(huì)消耗 CPU 資源。

a4e92c6c-29f6-11ee-a368-dac502259ad0.png

應(yīng)用計(jì)算的越多,消耗的電量越多.在完成相同的基本操作時(shí), 老一代的設(shè)備會(huì)消耗更多的電量(換電池呀 哈哈哈 開個(gè)玩笑),計(jì)算量的消耗取決于不同的因素。

對(duì)數(shù)據(jù)的處理

待處理的數(shù)據(jù)大小----更大的顯示屏允許軟件在單個(gè)視圖中展示更多的信息,但這也意味著要處理更多的數(shù)據(jù)

處理數(shù)據(jù)的算法和數(shù)據(jù)結(jié)構(gòu)

執(zhí)行更新的次數(shù),尤其是在數(shù)據(jù)更新后,觸發(fā)應(yīng)用的狀態(tài)或 UI 進(jìn)行更新(應(yīng)用收到的推送通知也會(huì)導(dǎo)致數(shù)據(jù)更新,如果此用戶正在使用應(yīng)用,你還需要更新 UI)

沒(méi)有單一原則可以減少設(shè)備中的執(zhí)行次數(shù),很多規(guī)則都取決于操作的本質(zhì), 以下是一些可以在應(yīng)用中投入使用的最佳實(shí)踐.

針對(duì)不同的情況選擇優(yōu)化的算法

如果應(yīng)用從服務(wù)器接受數(shù)據(jù),盡量減少需要在客戶端進(jìn)行的處理

優(yōu)化靜態(tài)編譯(ahead-of-time,AOT)處理 動(dòng)態(tài)編譯處理的缺點(diǎn)在于他會(huì)強(qiáng)制用戶等待操作完成, 但是激進(jìn)的 AOT 處理則會(huì)導(dǎo)致計(jì)算資源的浪費(fèi), 需要根據(jù)應(yīng)用和設(shè)備選擇精確定量的 AOT 處理.

2. 網(wǎng)絡(luò)

智能的網(wǎng)絡(luò)訪問(wèn)管理可以讓應(yīng)用響應(yīng)的更快,并有助于延長(zhǎng)電池壽命.在無(wú)法訪問(wèn)網(wǎng)絡(luò)時(shí),應(yīng)該推遲后續(xù)的網(wǎng)絡(luò)請(qǐng)求, 直到網(wǎng)絡(luò)連接恢復(fù)為止。此外,應(yīng)避免在沒(méi)有連接 WiFi 的情況下進(jìn)行高寬帶消耗的操作.比如視頻流, 眾所周知, 蜂窩無(wú)線系統(tǒng)(LTE,4G,3G等)對(duì)電量的消耗遠(yuǎn)遠(yuǎn)大于 WiFi信號(hào), 根源在于 LTE 設(shè)備基于多輸入,多輸出技術(shù),使用多個(gè)并發(fā)信號(hào)以維護(hù)兩端的 LTE 鏈接,類似的,所有的蜂窩數(shù)據(jù)鏈接都會(huì)定期掃描以尋找更強(qiáng)的信號(hào). 因此,我們需要:

在進(jìn)行任何網(wǎng)絡(luò)操作之前,先檢查合適的網(wǎng)絡(luò)連接是否可用

持續(xù)監(jiān)視網(wǎng)絡(luò)的可用性,并在鏈接狀態(tài)發(fā)生變化時(shí)給與適當(dāng)?shù)姆答?/p>

官方提供了檢查和監(jiān)聽(tīng)網(wǎng)絡(luò)狀態(tài)的變化的代碼,大多數(shù)人使用的網(wǎng)絡(luò)庫(kù)————AFNetWorking也提供了類似的代碼,我們可以任選其一,亦或是自己編寫(這段代碼并不復(fù)雜)

3. 定位管理器和 GPS

定位服務(wù)包括GPS(或GLONASS)和WIFI硬件以及蜂窩網(wǎng)絡(luò)

原文中只寫了前兩種,而我們知道iOS的定位是有三種的

衛(wèi)星定位

蜂窩基站定位

Wi-Fi定位(WIFI定位的故事和緣由很有的一講,在后面會(huì)說(shuō))

我們都知道定位服務(wù)是很耗電的,使用 GPS 計(jì)算坐標(biāo)需要確定兩點(diǎn)信息:

時(shí)間鎖
每個(gè) GPS 衛(wèi)星每毫秒廣播唯一一個(gè)1023位隨機(jī)數(shù), 因而數(shù)據(jù)傳播速率是1.024Mbit/s GPS 的接收芯片必須正確的與衛(wèi)星的時(shí)間鎖槽對(duì)齊

頻率鎖
GPS 接收器必須計(jì)算由接收器與衛(wèi)星的相對(duì)運(yùn)動(dòng)導(dǎo)致的多普勒偏移帶來(lái)的信號(hào)誤差

計(jì)算坐標(biāo)會(huì)不斷的使用 CPU 和 GPS 的硬件資源,因此他們會(huì)迅速的消耗電池電量

先來(lái)看一下初始化CLLocationManager并高效接受地理位置更新的典型代碼

.h文件
@interfaceLLLocationViewController:UIViewController
@property(nonatomic,strong)CLLocationManager*manager;
@end

.m文件
@implementationLLLocationViewController

-(void)viewDidLoad{
[superviewDidLoad];
self.manager=[[CLLocationManageralloc]init];
self.manager.delegate=self;
}

-(void)enableLocationButtonClick:(UIButton*)sender{

self.manager.distanceFilter=kCLDistanceFilterNone;
//按照最大精度初始化管理器
self.manager.desiredAccuracy=kCLLocationAccuracyBest;

if(IS_IOS8){
[self.managerrequestWhenInUseAuthorization];
}
[self.managerstartUpdatingLocation];
}

-(void)locationManager:(CLLocationManager*)manager
didUpdateLocations:(NSArray*)locations{

CLLocation*loc=[locationslastObject];
//使用定位信息
}

3.1 最佳的初始化

distanceFilter 只要設(shè)備的移動(dòng)超過(guò)了最小的距離, 距離過(guò)濾器就會(huì)導(dǎo)致管理器對(duì)委托對(duì)象的 LocationManager事件通知發(fā)生變化,該距離單位是 M

desiredAccuracy 精度參數(shù)的使用直接影響了使用天線的個(gè)數(shù), 進(jìn)而影響了對(duì)電池的消耗.精度級(jí)別的選取取決于應(yīng)用的具體用途,精度是一個(gè)枚舉 我們應(yīng)該依照不同的需求去恰當(dāng)?shù)倪x取精度級(jí)別

距離過(guò)濾器只是軟件層面的過(guò)濾器,而精度級(jí)別會(huì)影響物理天線的使用.當(dāng)委托方法 LocationManager被調(diào)用時(shí),使用距離范圍更廣泛的過(guò)渡器只會(huì)影響間隔.另一方面,更高的精度級(jí)別意味著更多的活動(dòng)天線,這會(huì)消耗更多的能量

3.2 關(guān)閉無(wú)關(guān)緊要的特性

判斷何時(shí)需要跟蹤位置的變化, 在需要跟蹤的時(shí)候調(diào)用 startUpdatingLocation方法, 無(wú)須跟蹤時(shí)調(diào)用stopUpdatingLocation方法.

當(dāng)應(yīng)用在后臺(tái)運(yùn)行或用戶沒(méi)有與別人聊天時(shí),也應(yīng)該關(guān)閉位置跟蹤,也就說(shuō)說(shuō),瀏覽媒體庫(kù),查看朋友列表或調(diào)整應(yīng)用設(shè)置時(shí), 都應(yīng)該關(guān)閉位置跟蹤

3.3 只在必要時(shí)使用網(wǎng)絡(luò)

為了提高電量的使用效率, IOS 總是盡可能地保持無(wú)線網(wǎng)絡(luò)關(guān)閉.當(dāng)應(yīng)用需要建立網(wǎng)絡(luò)連接時(shí), IOS 會(huì)利用這個(gè)機(jī)會(huì)向后臺(tái)應(yīng)用分享網(wǎng)絡(luò)會(huì)話, 以便一些低優(yōu)先級(jí)能夠被處理, 如推送通知, 收取電子郵件等。關(guān)鍵在于每當(dāng)用戶建立網(wǎng)絡(luò)連接時(shí),網(wǎng)絡(luò)硬件都會(huì)在連接完成后多維持幾秒的活動(dòng)時(shí)間.每次集中的網(wǎng)絡(luò)通信都會(huì)消耗大量的電量 。要想減輕這個(gè)問(wèn)題帶來(lái)的危害,你的軟件需要有所保留的的使用網(wǎng)絡(luò).應(yīng)該定期集中短暫的使用網(wǎng)絡(luò),而不是持續(xù)的保持著活動(dòng)的數(shù)據(jù)流.只有這樣,網(wǎng)絡(luò)硬件才有機(jī)會(huì)關(guān)閉

3.4 后臺(tái)定位服務(wù)

這里iOS 10 之后變化比較大,參考即可

CLLocationManager提供了一個(gè)替代的方法來(lái)監(jiān)聽(tīng)位置的更新. [self.manager startMonitoringSignificantLocationChanges]可以幫助你在更遠(yuǎn)的距離跟蹤運(yùn)動(dòng).精確的值由內(nèi)部決定,且與distanceFilter無(wú)關(guān) 使用這一模式可以在應(yīng)用進(jìn)入后臺(tái)后繼續(xù)跟蹤運(yùn)動(dòng),典型的做法是在應(yīng)用進(jìn)入后臺(tái)時(shí)執(zhí)行startMonitoringSignificantLocationChanges方法,而當(dāng)應(yīng)用回到前臺(tái)時(shí)執(zhí)行startUpdatingLocation 如下代碼

-(void)applicationDidEnterBackground:(UIApplication*)application{
[self.managerstopUpdatingLocation];
[self.managerstartMonitoringSignificantLocationChanges];
}
-(void)applicationWillEnterForeground:(UIApplication*)application{
[self.managerstopMonitoringSignificantLocationChanges];
[self.managerstartUpdatingLocation];
}

3.5 在應(yīng)用關(guān)閉后重啟

當(dāng)應(yīng)用位于后臺(tái)時(shí),任何定時(shí)器或線程都會(huì)掛起。但如果你在應(yīng)用位于后臺(tái)狀態(tài)時(shí)申請(qǐng)了定位,那么應(yīng)用會(huì)在每次收到更新后被短暫的喚醒。在此期間,線程和計(jì)時(shí)器都會(huì)被喚醒。

3.6 在應(yīng)用關(guān)閉后重啟

在其他應(yīng)用需要更多資源時(shí), 后臺(tái)的應(yīng)用可能會(huì)被關(guān)閉.在這種情況下, 一旦發(fā)生位置變化,應(yīng)用會(huì)被重啟,因而需要重新初始化監(jiān)聽(tīng)過(guò)程,若出現(xiàn)這種情況,application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法會(huì)受到鍵值為UIApplicationLaunchOptionsLocationKey的條目 如下代碼: 在應(yīng)用關(guān)閉后重新初始化監(jiān)聽(tīng)

-(void)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions{
//因缺乏資源而關(guān)閉應(yīng)用后,監(jiān)測(cè)應(yīng)用是否因?yàn)槲恢米兓恢貑?if(launchOptions[UIApplicationLaunchOptionsLocationKey]){
//開啟監(jiān)測(cè)位置的變化
[self.managerstartMonitoringSignificantLocationChanges];
}
}

4 屏幕

屏幕非常耗電, 屏幕越大就越耗電.當(dāng)然,如果你的應(yīng)用在前臺(tái)運(yùn)行且與用戶進(jìn)行交互,則勢(shì)必會(huì)使用屏幕并消耗電量 這里仍然有一些方案可以優(yōu)化屏幕的使用

4.1 動(dòng)畫

當(dāng)應(yīng)用在前臺(tái)時(shí), 使用動(dòng)畫, 一旦應(yīng)用進(jìn)入了后臺(tái),則立即暫停動(dòng)畫.通常來(lái)說(shuō),你可以通過(guò)監(jiān)聽(tīng) UIApplicationWillResignActiveNotification或UIApplicationDIdEnterBackgroundNotification的通知事件來(lái)暫?;蛲V箘?dòng)畫,也可以通過(guò)監(jiān)聽(tīng)UIApplicationDidBecomeActiveNotification的通知事件來(lái)恢復(fù)動(dòng)畫

4.2 視頻播放

在視頻播放期間,最好保持屏幕常量.可以使用UIApplication對(duì)象的 idleTimerDisabled屬性來(lái)實(shí)現(xiàn)這個(gè)目的.一旦設(shè)置了 YES, 他會(huì)阻止屏幕休眠,從而實(shí)現(xiàn)常亮. 與動(dòng)畫類似,你可以通過(guò)相應(yīng)應(yīng)用的通知來(lái)釋放和獲取鎖

4.3 多屏幕

使用屏幕比休眠鎖或暫停/恢復(fù)動(dòng)畫要復(fù)雜得多

如果正在播放電影或運(yùn)行動(dòng)畫, 你可以將它們從設(shè)備的屏幕挪到外部屏幕,而只在設(shè)備的屏幕上保留最基本的設(shè)置,這樣可以減少設(shè)備上的屏幕更新,進(jìn)而延長(zhǎng)電池壽命

處理這一場(chǎng)景的典型代碼會(huì)涉及一下步驟

在啟動(dòng)期間監(jiān)測(cè)屏幕的數(shù)量 如果屏幕數(shù)量大于1,則進(jìn)行切換

監(jiān)聽(tīng)屏幕在鏈接和斷開時(shí)的通知. 如果有新的屏幕加入, 則進(jìn)行切換. 如果所有的外部屏幕都被移除,則恢復(fù)到默認(rèn)顯示

@interface LLMultiScreenViewController () @property (nonatomic, strong)UIWindow *secondWindow; @end

@implementation LLMultiScreenViewController

}

}

}

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [nc addObserver:self selector:@selector(scrensChanged:) name:UIScreenDidConnectNotification object:nil];

}

}

NSArray *screens = [UIScreen screens]; if (screens.count > 1) { UIScreen *secondScreen = [screens objectAtIndex:1]; CGRect rect =secondScreen.bounds; if (self.secondWindow == nil) { self.secondWindow = [[UIWindow alloc]initWithFrame:rect]; self.secondWindow.screen = secondScreen;

LLScreen2ViewController*svc=[[LLScreen2ViewControlleralloc]init];
svc.parent=self;
self.secondWindow.rootViewController=svc;
}
self.secondWindow.hidden=NO;

}else{ [self disconnectFromScreen]; }

}

if (self.secondWindow != nil) { // 斷開連接并釋放內(nèi)存 self.secondWindow.rootViewController = nil; self.secondWindow.hidden = YES; self.secondWindow = nil; }

}

[[NSNotificationCenter defaultCenter] removeObserver:self];

}

(void)dealloc{

(void)disconnectFromScreen{

(void)updateScreens{

(void)scrensChanged:(NSNotification *)nofi{ [self updateScreens];

(void)registerNotifications{

(void)viewDidLoad { [super viewDidLoad];
[self registerNotifications];

(void)viewDidDisappear:(BOOL)animated{ [super viewDidDisappear:animated]; [self disconnectFromScreen];

(void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; [self updateScreens];

5 其他硬件

當(dāng)你的應(yīng)用進(jìn)入后臺(tái)是, 應(yīng)該釋放對(duì)這些硬件的鎖定:

藍(lán)牙

相機(jī)

揚(yáng)聲器,除非應(yīng)用是音樂(lè)類的

麥克風(fēng)

基本規(guī)則: 只有當(dāng)應(yīng)用處于前臺(tái)時(shí)才與這些硬件進(jìn)行交互, 應(yīng)用處于后臺(tái)時(shí)應(yīng)停止交互

不過(guò)揚(yáng)聲器和無(wú)線藍(lán)牙可能例外, 如果你正在開發(fā)音樂(lè),收音機(jī)或其他的音頻類應(yīng)用,則需要在應(yīng)用進(jìn)入后臺(tái)后繼續(xù)使用揚(yáng)聲器.不要讓屏幕僅僅為音頻播放的目的而保持常量.類似的, 若應(yīng)用還有未完成的數(shù)據(jù)傳輸, 則需要在應(yīng)用進(jìn)入后臺(tái)后持續(xù)使用無(wú)線藍(lán)牙,例如,與其他設(shè)備傳輸文件

6 電池電量與代碼感知

一個(gè)智能的應(yīng)用會(huì)考慮到電池的電量和自身的狀態(tài), 從而決定是否執(zhí)行資源密集消耗性的操作(比如掃二維碼時(shí)的手電).另外一個(gè)有價(jià)值的點(diǎn)是對(duì)充電的判斷,確定設(shè)備是否處于充電狀態(tài)

來(lái)看一下此處的代碼實(shí)施

-(BOOL)shouldProceedWithMinLevel:(NSUInteger)minLevel{

UIDevice*device=[UIDevicecurrentDevice];
//打開電池監(jiān)控
device.batteryMonitoringEnabled=YES;

UIDeviceBatteryStatestate=device.batteryState;
//在充電或電池已經(jīng)充滿的情況下,任何操作都可以執(zhí)行
if(state==UIDeviceBatteryStateCharging||
state==UIDeviceBatteryStateFull){
returnYES;
}
//UIdevice返回的batteryLevel的范圍在0.00~1.00
NSUIntegerbatteryLevel=(NSUInteger)(device.batteryLevel*100);
if(batteryLevel>=minLevel){
returnYES;
}
returnNO;
}

我們也可以得到應(yīng)用對(duì) CPU 的利用率

//需要導(dǎo)入這兩個(gè)頭文件
#import
#import

-(float)appCPUUsage{
kern_return_tkr;
task_info_data_tinfo;
mach_msg_type_number_tinfoCount=TASK_INFO_MAX;
kr=task_info(mach_task_self(),TASK_BASIC_INFO,info,&infoCount);
if(kr!=KERN_SUCCESS){
return-1;
}
thread_array_tthread_list;
mach_msg_type_number_tthread_count;
thread_info_data_tthinfo;
mach_msg_type_number_tthread_info_count;
thread_basic_info_tbasic_info_th;

kr=task_threads(mach_task_self(),&thread_list,&thread_count);
if(kr!=KERN_SUCCESS){
return-1;
}
floattot_cpu=0;
intj;
for(j=0;jflags&TH_FLAGS_IDLE)){
tot_cpu+=basic_info_th->cpu_usage/TH_USAGE_SCALE*100.0;
}
}
vm_deallocate(mach_task_self(),(vm_offset_t)thread_list,thread_count*sizeof(thread_t));
returntot_cpu;

}

當(dāng)剩余電量較低時(shí),提醒用戶,并請(qǐng)求用戶授權(quán)執(zhí)行電源密集型的操作,---當(dāng)然,只在 用戶同意的前提下執(zhí)行 總是用一個(gè)指示符(也就是進(jìn)度條百分比)顯示長(zhǎng)時(shí)間任務(wù)的進(jìn)度, 包括設(shè)備上即將完成的計(jì)算或者只是下載一些內(nèi)容.向用戶提供完成進(jìn)度的估算, 以幫助他們決定是否需要為設(shè)備充電

7 最佳實(shí)踐

以下的最佳實(shí)踐可以確保對(duì)電量的謹(jǐn)慎使用, 遵循以下要點(diǎn),應(yīng)用可以實(shí)現(xiàn)對(duì)電量的高效使用.

最小化硬件使用. 換句話說(shuō),盡可能晚的與硬件打交道, 并且一旦完成任務(wù)立即結(jié)束使用

在進(jìn)行密集型任務(wù)前, 檢查電池電量和充電狀態(tài)

在電量低時(shí), 提示用戶是否確定要執(zhí)行任務(wù),并在用戶同意后再執(zhí)行

或提供設(shè)置的選項(xiàng),允許用戶定義電量的閾值,以便在執(zhí)行秘籍型操作前提示用戶

下邊代碼展示了設(shè)置電量的閾值以提示用戶.

-(IBAction)onIntensiveOperationButtonClick:(id)sender{

NSUserDefaults*defaults=[NSUserDefaultsstandardUserDefaults];

BOOLprompt=[defaultsboolForKey:@"promptForBattery"];
intminLevel=[defaultsintegerForKey:@"minBatteryLevel"];

BOOLcanAutoProceed=[selfshouldProceeWithMinLevel:minLevel];

if(canAutoProceed){
[selfexecuteIntensiveOperation];
}else{

if(prompt){
UIAlertView*view=[[UIAlertViewalloc]initWithTitle:@"提示"message:@"電量低于最小值,是否繼續(xù)執(zhí)行"delegate:selfcancelButtonTitle:@"取消"otherButtonTitles:@"確定"];
[viewshow];
}else{

[selfqueueIntensiveOperation];
}
}
}

-(void)alertView:(UIAlertView*)alertViewclickedButtonAtIndex:(NSInteger)buttonIndex{

if(buttonIndex==0){
[selfqueueIntensiveOperation];
}else{
[selfexecuteIntensiveOperation];
}
}

設(shè)置由兩個(gè)條目組成:promptForBattery(應(yīng)用設(shè)置中的撥動(dòng)開關(guān),表明是否要在低電量時(shí)給予提示)和miniBatteryLevel(區(qū)間為0~100的一個(gè)滑塊,表明了最低電量------在此示例中,用戶可以自行調(diào)整),在實(shí)際項(xiàng)目中應(yīng)用的開發(fā)人員通常根據(jù)操作的復(fù)雜性和密集性對(duì)閾值進(jìn)行預(yù)設(shè).不同的密集型操作可能會(huì)有不同的最低電量需求

在實(shí)際執(zhí)行密集操作之前,檢查當(dāng)前電量是否足夠, 或者手機(jī)是否正在充電.這就是我們判斷是否可以進(jìn)行后續(xù)處理的邏輯,圖中你可以有自己的定制---最低電量和充電狀態(tài)

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10768

    瀏覽量

    210417
  • gps
    gps
    +關(guān)注

    關(guān)注

    22

    文章

    2865

    瀏覽量

    165816
  • 藍(lán)牙
    +關(guān)注

    關(guān)注

    114

    文章

    5723

    瀏覽量

    169072
  • iOS
    iOS
    +關(guān)注

    關(guān)注

    8

    文章

    3383

    瀏覽量

    150295
  • 電池
    +關(guān)注

    關(guān)注

    84

    文章

    10311

    瀏覽量

    128142

原文標(biāo)題:7 最佳實(shí)踐

文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    電池剩余電量顯示 手機(jī)是如何做到的?

    手機(jī)是如何知道電池剩余多少電量呢?其實(shí)在電池的內(nèi)部有一個(gè)電量計(jì),用于指示可充電電池中的
    發(fā)表于 02-04 09:24 ?2.3w次閱讀

    如何用51單片機(jī)制作檢測(cè)電池剩余電量的裝置

    如何用51單片機(jī)制作檢測(cè)電池剩余電量的裝置,檢測(cè)電量,然后可以根據(jù)LCD的顯示信息來(lái)及時(shí)對(duì)電池進(jìn)行充電。請(qǐng)教各位大神給點(diǎn)思路,謝謝。
    發(fā)表于 06-28 23:53

    如何計(jì)算測(cè)量電池電量(或者是剩余電量

    我在做電池電量的(或者說(shuō)是剩余電量)實(shí)驗(yàn),剩余電量值有問(wèn)題,在負(fù)荷時(shí),到是準(zhǔn)確,就是在空載時(shí)電量值反彈的厲害。說(shuō)明我是采用測(cè)量電池電壓的方法
    發(fā)表于 10-24 14:06

    開機(jī)充電如何判斷電池充滿?

    第一次設(shè)計(jì)充電電路。(連接圖如下)請(qǐng)教兩個(gè)問(wèn)題:1,tp4056當(dāng)Ibat為1/10額定電流時(shí)認(rèn)為電池充滿斷電,當(dāng)有負(fù)載時(shí),Ibat則一直大于1/10額定電流,此時(shí)一直處于充電
    發(fā)表于 12-09 14:19

    c語(yǔ)言實(shí)現(xiàn)庫(kù)侖計(jì)電池容量的計(jì)算,剩余電量的實(shí)現(xiàn)

    大神們幫忙解決一下,c語(yǔ)言實(shí)現(xiàn)庫(kù)侖計(jì)電池容量的計(jì)算,剩余電量的實(shí)現(xiàn),要考慮到溫度對(duì)電池容量的影響,充電次對(duì)電池容量的影響以及自耗三個(gè)因素的影
    發(fā)表于 04-23 18:01

    請(qǐng)問(wèn)哪位能分享顯示蓄電池剩余電量的電路設(shè)計(jì)原理圖嗎?

    請(qǐng)問(wèn)哪位有顯示蓄電池剩余電量的電路設(shè)計(jì)原理圖嗎,能分享給我一份嗎,謝謝?
    發(fā)表于 08-14 08:09

    請(qǐng)問(wèn)怎么檢測(cè)電源的剩余電量?

    請(qǐng)問(wèn)有什么辦法可以檢測(cè)電源的剩余電量,或者什么電路可以實(shí)現(xiàn)?
    發(fā)表于 05-19 22:30

    如何降低電量的消耗

    的應(yīng)用需要謹(jǐn)慎地使用電能,用戶往往會(huì)刪除耗電量大的應(yīng)用。除 CPU 外,耗電量高、值得關(guān)注的硬件模塊還包括網(wǎng)絡(luò)硬件、藍(lán)牙、GPS、麥克風(fēng)、加速計(jì)、攝像頭、揚(yáng)聲器和屏幕等。如何降低電量的消耗,是延長(zhǎng)使用時(shí)間的關(guān)鍵,因此需要關(guān)注以下
    發(fā)表于 09-14 06:50

    基于模糊神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)技術(shù)檢測(cè)蓄電池剩余電量研究

    采用基于模糊神經(jīng)元網(wǎng)絡(luò)預(yù)測(cè)技術(shù)并應(yīng)用TI 公司的DSP TMS320F240 輔以相應(yīng)的傳感器檢測(cè)蓄電池剩余電量。該方法技術(shù)先進(jìn),實(shí)驗(yàn)結(jié)果表明測(cè)試精度高,為蓄電池剩余電量的檢測(cè)提供了有
    發(fā)表于 07-17 08:56 ?22次下載

    檢查電池剩余電量的兩種方法

    檢查電池剩余電量的兩種方法・如果電池已經(jīng)被插入到熔接機(jī)的插槽中,打開電源。那么電源模式會(huì)被自動(dòng)識(shí)別為 "電池",并且剩余電量
    發(fā)表于 11-07 14:26 ?65次下載

    精確計(jì)算電池剩余電量方法

    本文將討論盡可能精確計(jì)算剩余電池電量的重要性。令人遺憾的是,僅通過(guò)測(cè)量某些數(shù)據(jù)點(diǎn)甚至是電池電壓無(wú)法達(dá)到上述目的。溫度、放電速率以及電池老化等眾多因素都會(huì)影響充電
    發(fā)表于 05-19 16:28 ?133次下載
    精確計(jì)算<b class='flag-5'>電池</b><b class='flag-5'>剩余電量</b>方法

    國(guó)外專利剩余電量檢測(cè)系統(tǒng)

    國(guó)外專利剩余電量檢測(cè)系統(tǒng),當(dāng)?shù)?b class='flag-5'>電量時(shí),小車在完成上次當(dāng)前任務(wù)后改變路線,自動(dòng)尋找 充電充電,并 由另一臺(tái)完成充電的小車替代其任務(wù);
    發(fā)表于 11-30 18:13 ?3次下載

    手機(jī)是如何做到顯示電池剩余電量

    手機(jī)是如何做到顯示電池剩余電量
    發(fā)表于 01-22 21:11 ?26次下載

    怎樣利用AVR單片機(jī)來(lái)測(cè)試蓄電池剩余電量?

    10.8V)可獲得完整的放電曲線,即剩余電量與蓄電池內(nèi)阻之間的關(guān)系。將此曲線存入EPROM中,在以后測(cè)試同型號(hào)同規(guī)格的蓄電池時(shí),單片機(jī)將根據(jù)在線測(cè)到的電池內(nèi)阻值,通過(guò)查表計(jì)算,得出其
    發(fā)表于 07-23 08:07 ?7081次閱讀
    怎樣利用AVR單片機(jī)來(lái)測(cè)試蓄<b class='flag-5'>電池</b>的<b class='flag-5'>剩余電量</b>?

    教你預(yù)付費(fèi)電表后如何看剩余電量

    預(yù)付費(fèi)電表如何看剩余電量?不同的LCD液晶顯示會(huì)有不同的方式顯示剩余電量,有的電表在液晶顯示屏的剩余電量顯示會(huì)看到“ L”字母,“L”顯示的數(shù)據(jù)是代表表內(nèi)剩余
    發(fā)表于 09-29 15:38 ?2.3w次閱讀