4

iOS 内で容量 (mA)、電圧 (V)、サイクル数などのバッテリーに関する情報を受け取ることは可能ですか?

UIDevice クラスは知っていますが、バッテリー レベルは探しているものではありません。

4

5 に答える 5

5

UIDeviceListenerを試してみてください。基本的にUIDevice、プライベート API を使用せずにバッテリー データ ディクショナリ全体を盗みます。それは大量の情報を公開します:

{
    AdapterDetails =     {
        Amperage = 1000;
        Description = "usb host";
        FamilyCode = "-536854528";
        PMUConfiguration = 1000;
        Watts = 5;
    };
    AdapterInfo = 16384;
    Amperage = 1000;
    AppleRawCurrentCapacity = 1279;
    AppleRawMaxCapacity = 1275;
    AtCriticalLevel = 0;
    AtWarnLevel = 0;
    BatteryData =     {
        BatterySerialNumber = REDACTED;
        ChemID = 355;
        CycleCount = 524;
        DesignCapacity = 1420;
        Flags = 640;
        FullAvailableCapacity = 1325;
        ManufactureDate = REDACTED;
        MaxCapacity = 1273;
        MfgData = REDACTED;
        QmaxCell0 = 1350;
        StateOfCharge = 100;
        Voltage = 4194;
    };
    BatteryInstalled = 1;
    BatteryKey = "0003-default";
    BootBBCapacity = 52;
    BootCapacityEstimate = 2;
    BootVoltage = 3518;
    CFBundleIdentifier = "com.apple.driver.AppleD1815PMU";
    ChargerConfiguration = 990;
    CurrentCapacity = 1275;
    CycleCount = 524;
    DesignCapacity = 1420;
    ExternalChargeCapable = 1;
    ExternalConnected = 1;
    FullyCharged = 1;
    IOClass = AppleD1815PMUPowerSource;
    IOFunctionParent64000000 = <>;
    IOGeneralInterest = "IOCommand is not serializable";
    IOInterruptControllers =     (
        IOInterruptController34000000,
        IOInterruptController34000000,
        IOInterruptController34000000,
        IOInterruptController34000000
    );
    IOInterruptSpecifiers =     (
        <03000000>,
        <26000000>,
        <04000000>,
        <24000000>
    );
    IOMatchCategory = AppleD1815PMUPowerSource;
    IOPowerManagement =     {
        CurrentPowerState = 2;
        DevicePowerState = 2;
        MaxPowerState = 2;
    };
    IOProbeScore = 0;
    IOProviderClass = AppleD1815PMU;
    InstantAmperage = 0;
    IsCharging = 0;
    Location = 0;
    Manufacturer = A;
    MaxCapacity = 1275;
    Model = "0003-A";
    Serial = REDACTED;
    Temperature = 2590;
    TimeRemaining = 0;
    UpdateTime = 1461830702;
    Voltage = 4182;
    "battery-data" =     {
        "0003-default" = <...>;
        "0004-default" = <...>;
        "0005-default" = <...};
    "built-in" = 1;
}
于 2016-04-30T00:04:54.343 に答える
3

これについては間違っているかもしれませんが、パブリック API を使用すると、これは不可能です。ドキュメントによると、UIDeviceできることは、バッテリーの充電レベルとその状態を取得し、バッテリーの監視を有効にすることだけです。

2019 年 2 月 15 日更新: iOS UIDeviceAPI により、開発者はデバイスのバッテリー充電レベルにアクセスできるようになりました。うわー!現在、4 つの異なる API を公開しています。一見すると、これらは「プライベート」ではありません。つまり、Apple がアプリを AppStore からブロックすることなく、開発者が安全に使用できます。

デバイスのバッテリー状態を取得する

  1. var batteryLevel: Float(デバイスのバッテリー充電レベル)。
  2. var isBatteryMonitoringEnabled: Bool(バッテリーの監視が有効になっているか (true)、否か (false) を示すブール値)。
  3. var batteryState: UIDevice.BatteryState(デバイスのバッテリー状態)。
  4. enum UIDevice.BatteryState(デバイスのバッテリー電源状態)。
于 2012-09-10T06:54:10.737 に答える
0

JSystemInfoKitライブラリを見てください。

最初に IOKit フレームワークをインポートします (ここから .framework ファイルを取得します/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/IOKit.framework ) および IOKit ヘッダー (これらのファイルはここから取得) を iOS プロジェクトに追加します。

ここでは、広範なバッテリー情報を取得するために使用する必要がある方法を見つけることができます。

さらに、 IOPSCopyPowerSourcesInfo ( IOPowerSources.hから) は、 battery healthなどの詳細情報を含む NSDictionary を返します。

于 2016-04-02T18:39:18.973 に答える