2016-10-06 1 views
0

Я делаю приложение для распознавания лица, и я хочу сделать небольшую скамью в этом. Хотите помочь измерить батарею. Я пытался что-то вроде этого:benchmarking battery android

public float calcBattery(float init){ 
     float batteryValue; 
     int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); 
     int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1); 
     batteryValue = (init - (level/(float)10000)); 
     if (batteryValue<0) batteryValue*=-1; 
     return batteryValue; 
    } 

, но так как мое приложение работает в 2-х до 17 секунд в зависимости от числа граней уровня Теста всегда кажется неизменными. Я хочу знать, есть ли подходящий способ провести бенчмаркинг на Android-телефоне без участия третьей стороны.

Заранее спасибо

Edit:

Я хотел бы иметь какой-то способ измерения батареи более точно, то уровень батареи, как мА, например. И я не знаю, как измерить в мА, но я знаю, что это возможно, потому что есть приложения, которые делают это так.

ответ

1

Чтобы выполнить какой-либо бенчмаркинг с реальным значением, вам потребуется запустить приложение намного дольше, чем это. Вы должны иметь возможность включить цикл, который будет продолжаться до тех пор, пока не будет получен данный процентный пункт, или вы можете просто сделать кнопку цикла прерывания. Мое предложение было бы нацелено на то, чтобы идти от 90% до 10% или около того. Одна вещь об индикаторах срока службы батареи - то, что они нелинейные - Is Battery Life Linear?. Кроме того, вы должны убедиться, что многие другие приложения и фоновые процессы (не системные критические) отключены, чтобы исключить вероятность того, что какое-либо другое приложение будет использовать вашу батарею.

Следите за тем, сколько времени требуется для разряда батареи от 90% до 10%. Если вы разделите время на 80, то у вас есть время, в течение которого приложение должно использовать один процентный пункт батареи.

Давайте использовать некоторые составленные номера, чтобы сделать эту математику более конкретной. Скажите через 1 час, как правило, тесто идет от 90% до 10%. Час 3600 секунд. 3600/80 = 45. Так что в среднем каждые 45 секунд ваше приложение использует 1% от времени автономной работы.

Имейте в виду, что существует множество устройств, поэтому было бы лучше повторить это на нескольких разных устройствах различного качества.

Еще одна вещь иметь в виду. Если ваше приложение достаточно интенсивно, чтобы начать нагревать телефон больше, чем просто нагреваться, когда он работает (что, я думаю, может случиться с распознаванием лица), тогда батарея начнет стекать быстрее, когда она нагревается. Если это так, вы должны, вероятно, попробовать сделать много более коротких испытаний (возможно, 5% за раз). Это не идеально, потому что это добавляет больше шансов на ошибку, но может быть необходимо. В этом случае вы разделили бы на 5 вместо 80, а затем усредняли ваши испытания.

+0

Спасибо. Но даже если бы я принял ваш совет, я хотел бы как-то измерить батарею более точно, чем уровень батареи, например, мА. И у меня нет понятия, как измерить в этом. – EduardoMaia

+0

Хорошо, это не ясно из первоначального вопроса. Я не уверен, но вы могли бы получить mA таким же образом, как OP получает mV в этом вопросе. Http://stackoverflow.com/questions/28043112/get-the-exact-battery-level-on-android?rq = 1 Скажу, однако, что я не уверен, чего вы надеетесь достичь, получив это число. Различные устройства с разным уровнем вычислительной мощности в своем оборудовании будут использовать мощность с разной скоростью. Кроме того, Amp является единицей тока, он не скажет вам, сколько заряда осталось на устройстве, насколько быстро он использует мощность в данный момент. –