Уведомление об изменении режима звука Android - PullRequest
3 голосов
/ 01 февраля 2012

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

Я не могу использовать AudioFocus начиная с версии 2.2, так как мне нужно поддерживать 1.6 и более поздние версии.

Редактировать: Функция, которую я хочу остановить, включает обнаружение сотрясений и различные таймеры.Я хочу войти в неактивный режим в нестандартном звуковом режиме и снова стать активным в MODE_NORMAL.

1 Ответ

2 голосов
/ 01 февраля 2012

Я бы предложил двухфазную атаку.

Используйте AudioFocus для платформ, которые он поддерживает.Это примерно 90% телефонов, поэтому для большинства пользователей это лучшее решение.Нет причин, по которым ваше приложение не может поддерживать обе реализации и просто предоставляет подходящую для базовой платформы во время выполнения.

Для 1.6 я бы предложил следующее.Предположительно, функциональность вашего приложения, на которую вы хотите повлиять, - это своего рода воспроизведение звука.Если ваше приложение находится в процессе воспроизведения звука, то постепенный расход батареи при опросе, чтобы увидеть, будут ли изменения режима звука, будет относительно незначительным.

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

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

Поскольку вы хотите отключить определенные функции только в течение коротких периодов времени, когда телефон находится в режиме разговора, лучше выполнить запрос в режиме аудио непосредственно перед выполнением действия, которое вы хотите отключить во время разговора.

Таким образом, шаги становятся следующими:

  • Проверка режима звука перед воспроизведением / действием.
  • Опрос режима звука во время воспроизведения.
...