summaryrefslogtreecommitdiffstats
path: root/docs/html/intl/ru/training/monitoring-device-state/battery-monitoring.jd
diff options
context:
space:
mode:
Diffstat (limited to 'docs/html/intl/ru/training/monitoring-device-state/battery-monitoring.jd')
-rw-r--r--docs/html/intl/ru/training/monitoring-device-state/battery-monitoring.jd120
1 files changed, 0 insertions, 120 deletions
diff --git a/docs/html/intl/ru/training/monitoring-device-state/battery-monitoring.jd b/docs/html/intl/ru/training/monitoring-device-state/battery-monitoring.jd
deleted file mode 100644
index 26daf04..0000000
--- a/docs/html/intl/ru/training/monitoring-device-state/battery-monitoring.jd
+++ /dev/null
@@ -1,120 +0,0 @@
-page.title=Monitoring the Battery Level and Charging State
-parent.title=Optimizing Battery Life
-parent.link=index.html
-
-trainingnavtop=true
-next.title=Determining and Monitoring the Docking State and Type
-next.link=docking-monitoring.html
-
-@jd:body
-
-<div id="tb-wrapper">
-<div id="tb">
-
-<h2>Содержание урока</h2>
-<ol>
- <li><a href="#DetermineChargeState">Определение текущего состояния зарядки</a></li>
- <li><a href="#MonitorChargeState">Отслеживание изменений состояния зарядки</a></li>
- <li><a href="#CurrentLevel">Определение текущего уровня заряда батареи</a></li>
- <li><a href="#MonitorLevel">Отслеживание существенных изменений уровня заряда батареи</a></li>
-</ol>
-
-<h2>Дополнительные материалы</h2>
-<ul>
- <li><a href="{@docRoot}guide/components/intents-filters.html">Намерения и фильтры намерений</a>
-</ul>
-
-</div>
-</div>
-
-<p>Если вы хотите изменить частоту фоновых обновлений, чтобы продлить время работы устройства от батареи, сначала рекомендуется проверить текущий уровень заряда и состояние зарядки.</p>
-
-<p>Именно от этих двух факторов зависит, как обновления повлияют на время работы устройства от батареи. Когда устройство подключено к сети переменного тока, приложение можно обновлять максимально часто, поскольку процесс обновления не будет сказываться на уровне заряда батареи. Если устройство не подключено к сети, следует воздержаться от обновлений, чтобы продлить время его работы от батареи.</p>
-
-<p>Если заряд батареи практически исчерпан, можно снизить частоту обновлений (вплоть до их полного прекращения).</p>
-
-
-<h2 id="DetermineChargeState">Определение текущего состояния зарядки</h2>
-
-<p>Начните с определения текущего состояния зарядки. {@link android.os.BatteryManager} передает все сведения о батарее и зарядке в закрепленном намерении {@link android.content.Intent}, которое содержит также информацию о состоянии зарядки.</p>
-
-<p>Поскольку это намерение является закрепленным, регистрировать {@link android.content.BroadcastReceiver} не нужно. Чтобы получить текущее состояние батареи в виде намерения, нужно вызвать {@code registerReceiver}, передав {@code null} в качестве приемника, как показано в коде ниже. Можно также передать фактический объект {@link android.content.BroadcastReceiver}, но это необязательно, поскольку обработка обновлений будет выполняться позднее.</p>
-
-<pre>IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
-Intent batteryStatus = context.registerReceiver(null, ifilter);</pre>
-
-<p>Можно извлечь данные как о текущем состоянии, так и об источнике зарядки (USB или сеть переменного тока), если устройство заряжается:<p>
-
-<pre>// Are we charging / charged?
-int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
-boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
- status == BatteryManager.BATTERY_STATUS_FULL;
-
-// How are we charging?
-int chargePlug = battery.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
-boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
-boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;</pre>
-
-<p>Как правило, если устройство подключено к сети переменного тока, фоновые обновления можно выполнять с максимальной частотой. Если устройство заряжается через USB, частоту можно несколько сократить, а если устройство не подключено к сети&nbsp;– сократить еще больше.</p>
-
-
-<h2 id="MonitorChargeState">Отслеживание изменений состояния зарядки</h2>
-
-<p>Состояние зарядки изменяется всякий раз, когда пользователь подключает устройство к источнику питания. Поскольку это случается довольно часто, важно отслеживать изменения этого состояния и соответствующим образом корректировать частоту обновления приложения.</p>
-
-<p>{@link android.os.BatteryManager} передает действие каждый раз, когда устройство подключается к источнику питания или отключается от него. Важно получать эти события, даже если приложение не работает. Они помогут, в частности, определить, как часто будет запускаться приложение для выполнения фоновых обновлений. Чтобы отслеживать их, зарегистрируйте {@link android.content.BroadcastReceiver} в манифесте, задав {@link android.content.Intent#ACTION_POWER_CONNECTED} и {@link android.content.Intent#ACTION_POWER_DISCONNECTED} в фильтре намерений.</p>
-
-<pre>&lt;receiver android:name=".PowerConnectionReceiver">
- &lt;intent-filter>
- &lt;action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
- &lt;action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
- &lt;/intent-filter>
-&lt;/receiver></pre>
-
-<p>Соответствующая реализация {@link android.content.BroadcastReceiver} позволяет извлечь данные о текущем состоянии и способе зарядки, как описано в предыдущем шаге.</p>
-
-<pre>public class PowerConnectionReceiver extends BroadcastReceiver {
- &#64;Override
- public void onReceive(Context context, Intent intent) {
- int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
- boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
- status == BatteryManager.BATTERY_STATUS_FULL;
-
- int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
- boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
- boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
- }
-}</pre>
-
-
-<h2 id="CurrentLevel">Определение текущего уровня заряда батареи</h2>
-
-<p>В некоторых случаях целесообразно определять текущий уровень заряда батареи. Если он ниже определенного значения, частоту фоновых обновлений следует уменьшить.</p>
-
-<p>Узнать, каков в настоящий момент заряд батареи, можно путем извлечения данных о текущем и максимальном уровне заряда из намерения состояния батареи, как показано в этом коде:</p>
-
-<pre>int level = battery.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
-int scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
-
-float batteryPct = level / (float)scale;</pre>
-
-
-<h2 id="MonitorLevel">Отслеживание существенных изменений уровня заряда батареи</h2>
-
-<p>Отслеживать состояние батареи непрерывно не следует,</p>
-
-<p>поскольку при этом нагрузка на батарею будет значительно выше, чем при обычной работе приложения. Рекомендуется отслеживать только существенные изменения уровня заряда, в частности, переход устройства в состояние низкого заряда и обратно.</p>
-
-<p>Фрагмент манифеста, приведенный ниже, относится к фильтру намерений в приемнике широковещательных намерений. Приемник срабатывает, когда батарея устройства переходит в состояние низкого заряда или выходит из него. Для этого прослушиваются события {@link android.content.Intent#ACTION_BATTERY_LOW} и {@link android.content.Intent#ACTION_BATTERY_OKAY}.</p>
-
-<pre>&lt;receiver android:name=".BatteryLevelReceiver">
-&lt;intent-filter>
- &lt;action android:name="android.intent.action.ACTION_BATTERY_LOW"/>
- &lt;action android:name="android.intent.action.ACTION_BATTERY_OKAY"/>
- &lt;/intent-filter>
-&lt;/receiver></pre>
-
-<p>Общепринятой практикой является отключение всех фоновых обновлений, когда заряд батареи достигает критически низкого уровня. Будет уже неважно, насколько актуальны данные в вашем приложении, если телефон самопроизвольно выключится, прежде чем пользователь успеет их просмотреть.</p>
-
-<p>Во многих случаях начало зарядки устройства совпадает с моментом его установки в док-станцию. В следующем уроке описаны способы определения текущего состояния подключения устройства к док-станции и отслеживания изменений этого состояния.</p>
-