15

この関数を使用して、デバイスの現在のバッテリーレベルを取得しています。

[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];
UIDevice *myDevice = [UIDevice currentDevice];

[myDevice setBatteryMonitoringEnabled:YES];
double batLeft = (float)[myDevice batteryLevel]; 
NSLog(@"%f",batLeft);

ただし、結果の粒度は5%です。例:電話のバッテリーが88%の場合、0.85の値しか記録されません。batteryLevel0.05刻みの値のみを返します。例:0.85、0.9、0.95であり、0.82や0.83のような値を返すことはありません。

より高い精度でパーセンテージを取得するための解決策はありますか?

4

7 に答える 7

32

バッテリーレベルを読み取るには、少なくとも4つの異なる方法があり、4つの方法すべてが異なる値を返す場合があります。

これは、これらの値の経時的なチャートです。

値はこのiOSプロジェクトで記録されました:https ://github.com/nst/BatteryChart

参照用のコードを確認してください。

iPhone5バッテリー

于 2013-05-22T15:04:39.357 に答える
10

このサイトをチェックしてください: プログラムでバッテリーレベルを読む

ただし、慎重に使用してください。ここで使用されているすべてのAPIはiPhoneで文書化されていないため、このアプリケーションをAppStoreに送信すると拒否される可能性があります。バッテリーの充電状態は正確ではありませんが、UIDeviceのバッテリー監視方法を使用することをお勧めします。

于 2012-08-04T09:17:36.800 に答える
4
UIDevice *myDevice = [UIDevice currentDevice];    
[myDevice setBatteryMonitoringEnabled:YES];

double batLeft = (float)[myDevice batteryLevel] * 100;
NSLog(@"%.f", batLeft);    

NSString * levelLabel = [NSString stringWithFormat:@"%.f%%", batLeft];    
lblLevel.text = levelLabel;
于 2012-08-22T12:55:23.753 に答える
2

バッテリーレベルを取得するためのSwiftバージョン:

UIDevice.current.isBatteryMonitoringEnabled = true
let batteryLevel = UIDevice.current.batteryLevel 

batteryLevel0,39を返します。私にとっては0,40の値。

于 2019-02-21T14:28:23.777 に答える
1

上記の答えは非常に良いですが、それらはすべてObj-Cにあり、同じタスクを実行するために他の例でこれらを使用したMonoTouchので、誰かがそれを必要とする場合に備えてここにコードを置きます:

try
{
    UIDevice.CurrentDevice.BatteryMonitoringEnabled = true;
    _Battery.Level = (int)(UIDevice.CurrentDevice.BatteryLevel * IOSBatteryLevelScalingFactor);
    _Battery.State = UIDevice.CurrentDevice.BatteryState;
}
catch (Exception e)
{
    ExceptionHandler.HandleException(e, "BatteryState.Update");
    throw new BatteryUpdateException();
}
finally
{
    UIDevice.CurrentDevice.BatteryMonitoringEnabled = false;
}

私のブログにも完全な投稿があり、ここにすべての詳細を記載しています

于 2014-01-20T05:51:28.583 に答える
1

あなたはここで完璧な答えを見つけることができます

Xcode:11.4 Swift:5.2

ここをクリック

于 2020-04-21T04:46:22.543 に答える
0

swift 5.1以降を使用している場合、このコードは間違いなく機能します。

ステップ1:-開始するには、まず次のように、現在のデバイスのisBatteryMonitoringEnabledプロパティを有効にします。-

UIDevice.current.isBatteryMonitoringEnabled = true

ステップ2:-これで現在のバッテリーレベルを読み取ることができます

let level = UIDevice.current.batteryLevel
print(level)
于 2020-03-05T06:40:56.593 に答える