如何获得正确的电池电量和电池状态-ios?

Posted

技术标签:

【中文标题】如何获得正确的电池电量和电池状态-ios?【英文标题】:How to get correct battery level and battery status-ios? 【发布时间】:2015-05-21 12:10:15 【问题描述】:

总是 [myDevice batteryLevel] 返回 -1 和 [myDevice batterystate]returning 0(进入默认情况)。

我怎样才能得到正确的值?谁能帮我解决这个问题?下面是我的代码。(总是将batteryLeft打印为“-100%”,将电池状态打印为“Unknown”)。

代码:

UIDevice *myDevice = [UIDevice currentDevice];
[myDevice setBatteryMonitoringEnabled:YES];
float batLeft = [myDevice batteryLevel]*100;
int status=[myDevice batteryState];
NSLog(@"level:%0.0f",batLeft);
NSString *status_str;
switch (status)

    case UIDeviceBatteryStateUnplugged:
    
        NSLog(@"UnpluggedKey");
        status_str=@"UnPlugged";
        break;
    
    case UIDeviceBatteryStateCharging:
    
        NSLog(@"ChargingKey");
        status_str=@"Charging";
        break;
    
    case UIDeviceBatteryStateFull:
    
        NSLog(@"FullKey");
        status_str=@"BatteryFul";
        break;
    

default:

    NSLog(@"UnknownKey");
    status_str=@"Unknown";
    break;


NSLog(@"Battery status:%@",status_str);

【问题讨论】:

你是在设备还是模拟器上测试?在模拟器上进行测试会给你现在得到的输出。 :-) 【参考方案1】:

您的代码看起来没问题,与我在我的一个应用中使用的代码相同:

-(void) battery

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

    int state = [myDevice batteryState];
    NSLog(@"battery status: %d",state); // 0 unknown, 1 unplegged, 2 charging, 3 full

    double batLeft = (float)[myDevice batteryLevel] * 100;
    NSLog(@"battery left: %ld", batLeft);

您的问题可能是您在模拟器中尝试此操作,但无法正常工作。

在一台真实设备上试用。

【讨论】:

这段代码与问题中已有的代码有何不同?请说明这是如何解决问题的。【参考方案2】:

我希望你没有在你的模拟器上检查它:)

您不会获得设备的确切电池电量,它始终是 0.05 的倍数。这意味着如果您的设备电池电量为 78%,那么它将显示 75%。

如果您想要准确的电池电量指示,那么您可以点击此链接:http://blog.coriolis.ch/2009/02/14/reading-the-battery-level-programmatically/

【讨论】:

以上是关于如何获得正确的电池电量和电池状态-ios?的主要内容,如果未能解决你的问题,请参考以下文章

Cordova 电池状态 - 如何立即获得水平?

电池状态总是返回 Null

如何在 Linux 终端下检查笔记本电池状态

用于在后台检查电池电量的 iOS 应用程序

如何根据当前剩余电池电量获得估计的通话时间、音乐/视频播放时间、空闲时间

iqoo7如何让电池显示百分比在外面?