Не всегда мобильное приложение удается сделать экономичным по отношению к батарее. Яркий пример таких приложений – автомобильная навигация. В этом случае для предотвращения быстрого разряда батареи следует использовать внешнее питание. В этой заметке я покажу каким образом отслеживать такие ситуации.
В случаях, когда сценарии использования нашего приложения предполагают наличие внешнего питания, следовало бы предупредить пользователя об этом. Напрашивается следующая логика: перед запуском ресурсоемкого программного кода мы должны проверить присутствует ли внешний источник питания и, если нет, то предупредить пользователя о том, что батарея может быть быстро истощена. То же самое следует проделывать всякий раз, когда внешнее питание отключается.
Эту логику просто реализовать, используя класс DeviceStatus. Для наших целей он содержит:
Теперь мы можем построить требую для нас логику. Предположим, что у нас есть два метода – StartWorkingHard() и StopWorkingHard(), которые запускают и останавливают запись GPS-трека. Тогда код для отслеживания источника питания может выглядеть так:
public MainPage()
{
InitializeComponent();
DeviceStatus.PowerSourceChanged += PowerSourceChanged;
CheckPowerStatus();
}
private void PowerSourceChanged(object sender, EventArgs e)
{
CheckPowerStatus();
}
private void CheckPowerStatus()
{
if (DeviceStatus.PowerSource == PowerSource.Battery)
{
if (MessageBox.Show("Используется питание от батареи. Продолжить запись трека?", "Изменен источник питания", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
{
StartWorkingHard();
}
else
StopWorkingHard();
}
else
StartWorkingHard();
}
private void StartWorkingHard()
{
}
private void StopWorkingHard()
{
}