移动或平板电脑充电时能量流入

时间:2015-09-15 09:03:25

标签: android ios mobile flow energy

我想知道在充电时是否可以测量移动设备(IOS或Android)中的能量流量? 以每小时瓦特或每小时MilliAmperes为例。

基本上我想测量一下我收取的电量。 是否有本机或低级API?

谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

<强>的Android

Battery level checking Android

Battery level checking Android 1

请参阅演示:Battery Demo Android

<强>的iOS

是的,在iOS设备中为设备充电时,您可以获得有关电池状态的信息。您batteryLevelChangedbatteryStateChanged

的通知

请参阅演示:Batterry Demo iOS

注意:在iOS设备中运行此演示。不是模拟器。

// Register for battery level and state change notifications.
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(batteryLevelChanged:)
                                                 name:UIDeviceBatteryLevelDidChangeNotification object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(batteryStateChanged:)
                                                 name:UIDeviceBatteryStateDidChangeNotification object:nil];

updateBatteryLevel的代码:

- (void)updateBatteryLevel
{
    float batteryLevel = [UIDevice currentDevice].batteryLevel;
    if (batteryLevel < 0.0) {
        // -1.0 means battery state is UIDeviceBatteryStateUnknown
        self.levelLabel.text = NSLocalizedString(@"Unknown", @"");
    }
    else {
        static NSNumberFormatter *numberFormatter = nil;
        if (numberFormatter == nil) {
            numberFormatter = [[NSNumberFormatter alloc] init];
            [numberFormatter setNumberStyle:NSNumberFormatterPercentStyle];
            [numberFormatter setMaximumFractionDigits:1];
        }

        NSNumber *levelObj = [NSNumber numberWithFloat:batteryLevel];
        self.levelLabel.text = [numberFormatter stringFromNumber:levelObj];
    }
}

- (void)updateBatteryState
{
    NSArray *batteryStateCells = @[self.unknownCell, self.unpluggedCell, self.chargingCell, self.fullCell];

    UIDeviceBatteryState currentState = [UIDevice currentDevice].batteryState;

    for (int i = 0; i < [batteryStateCells count]; i++) {
        UITableViewCell *cell = (UITableViewCell *) batteryStateCells[i];

        if (i + UIDeviceBatteryStateUnknown == currentState) {
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
        }
        else {
            cell.accessoryType = UITableViewCellAccessoryNone;
        }
    }
}

答案 1 :(得分:0)

最简单的解决方案之一(也是最准确的)是获得一个记录穿过墙上插头的电流的电流表。任何功率测量API都取决于电路板上的仪器。有时这是一个直接的衡量标准(准确),有时它是计算/推断的(可能准确,可能非常不准确)。

这些数据记录器的范围从工业(更昂贵,更少工作)到DIY(便宜,更多工作)。您想要的取决于您拥有多少时间以及使用它的频率。