Приложения для Windows Phone 7, зависящие от источника питания

Не всегда мобильное приложение удается сделать экономичным по отношению к батарее. Яркий пример таких приложений — автомобильная навигация. В этом случае для предотвращения быстрого разряда батареи следует использовать внешнее питание. Здесь я покажу каким образом отслеживать такие ситуации.

В случаях, когда сценарии использования нашего приложения предполагают наличие внешнего питания, следовало бы предупредить пользователя об этом. Напрашивается следующая логика: перед запуском ресурсоемкого программного кода мы должны проверить присутствует ли внешний источник питания и, если нет, то предупредить пользователя о том, что батарея может быть быстро истощена. То же самое следует проделывать всякий раз, когда внешнее питание отключается.

Эту логику просто реализовать, используя класс DeviceStatus. Для наших целей он содержит:

  • свойство PowerSource – позволяет определить текущий источник питания (батарея или внешний);
  • событие PowerSourceChanged – позволяет отловить момент, когда источник питания изменяется.

Теперь мы можем построить требую для нас логику. Предположим, что у нас есть два метода – 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()
{
}