你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 獲取IOS設備的電量信息:Battery Level

獲取IOS設備的電量信息:Battery Level

編輯:IOS開發綜合

本文介紹了如何通過API獲取IOS設備的電量信息。
移動設備的電量消耗一直是一個大問題,APP開發中也不可避免地需要收集APP運行時的電量消耗信息,這也是APP性能的衡量標准之一。
首先需要打開iphone設置中的電量統計。

1.通過Instruments獲取

Instruments工具自帶的Energy Diagnostics工具可以獲取到iphone特定時段的電量消耗信息。具體步驟:
打開Developer選項中的Start Logging —> 斷開iphone與PC連接 —> 一系列的用戶操作 —> Stop Logging —> 連接iphone與PC, 將電量消耗數據導入Instruments。
但這種方式獲取的信息不是非常直觀。

2. 通過UIDevice獲取

UIDevice提供了當前ios設備的詳細信息,如name, systemVersion, localizedModel, batteryLevel等。

UIDevice.currentDevice.batteryMonitoringEnabled = true
let batteryLevel = UIDevice.currentDevice().batteryLevel
UIDevice.currentDevice.batteryMonitoringEnabled = false

IOS系統的電量可以通過UIDevice獲取到,但在IOS 8.0之前,UIDevice中的batteryLevel只能精確到5%,需要通過其他方式獲取1%精度的電量信息。而在IOS 8.0之後,開始支持1%的精確度。

3. 通過IOKit framework來獲取

IOKit framework在IOS中用來跟硬件或內核服務通信,常用於獲取硬件詳細信息。
首先,需要將IOPowerSources.h,IOPSKeys.h,IOKit三個文件導入到工程中。然後即可通過如下代碼獲取1%精確度的電量信息:

-(double) getBatteryLevel{
    // returns a blob of power source information in an opaque CFTypeRef
    CFTypeRef blob = IOPSCopyPowerSourcesInfo();
    // returns a CFArray of power source handles, each of type CFTypeRef
    CFArrayRef sources = IOPSCopyPowerSourcesList(blob);
    CFDictionaryRef pSource = NULL;
    const void *psValue;
    // returns the number of values currently in an array
    int numOfSources = CFArrayGetCount(sources);
    // error in CFArrayGetCount
    if (numOfSources == 0) {
        NSLog(@"Error in CFArrayGetCount");
        return -1.0f;
    }

    // calculating the remaining energy
    for (int i=0; i

當然, 前提仍然是要把batteryMonitoringEnabled置為true。
最後,就可以查看並分析該APP的耗電量情況了。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved