2015-09-15 9 views
3

Я хотел бы узнать, можно ли измерить, сколько энергии протекает в мобильном устройстве (IOS или Android), когда оно заряжается? В ваттах за час или миллиампер в час для примера.поток энергии при зарядке мобильного телефона или планшета

В основном я хотел бы измерить, сколько электричества я взял из своего заряда. Есть ли для этого родной или низкоуровневый API?

спасибо за YOUT помощь

ответ

1

Android

Battery level checking Android

Battery level checking Android 1

См демо: Battery Demo Android

IOS

Да в устройстве iOS, когда вы заряжаете устройство, вы можете получить информацию о состоянии батареи. Уведомление о вашем batteryLevelChanged и batteryStateChanged

Смотрите демо: Batterry Demo iOS

Примечание: Run This демо в 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; 
     } 
    } 
} 
+0

Привет Кирит, спасибо вам за помощь! Выполняя эти коды, какую информацию я получаю точно? % от уровня заряда батареи? Miliamperes ...? Извините, если мой вопрос кажется немного наивным :) –

+0

self.levelLabel.text вы получаете уже процентное значение в ios, так же, как Android-демо, не принимайте Milometer. –

+0

ОК. Просто чтобы подтвердить: можно получить миллиамперы через Android, но не возможно через IOS? –

0

Одним из простейших решений он (и наиболее точные), чтобы получить амперметр, который записывает ток через дюбель. Любой API измерения мощности зависит от того, какие приборы имеются на плате. Иногда это прямая мера (точная), а иногда она вычисляется/выводится (может быть, точна, может быть, очень неточна).

Эти регистраторы данных могут варьироваться от промышленных (более дорогих, меньше рабочих) до DIY (дешево, больше работы). Который вы хотите, зависит от того, сколько времени у вас есть и как часто вы собираетесь его использовать.

+0

Привет Тейлор, спасибо за ваш ответ! Итак, чтобы увидеть, правильно ли я это сделаю: получить это невозможно только с мобильного телефона или планшета, потому что он не будет достаточно точным? –

+0

Все зависит от оборудования. Я видел и то, и другое. Это решение связано с инженерными потребностями дизайнеров, когда им нужно отлаживать и специфицировать компоненты. От стены определенно будет точно, потому что это прямая мера. Программное обеспечение, вероятно, достаточно точно для большинства работ. Если вы действительно должны точно знать, я бы пошел со стены. Если примерно достаточно, скажем, в пределах +/- 20%, то использование поставляемых API должно быть прекрасным. –

+0

Привет Тейлор, спасибо за подробности. Я думаю, что я пойду за стеной, и, вероятно, испытаю с моим приложением, насколько это точно :) –