Лучшая практика для регулировки громкости iOS? - PullRequest
5 голосов
/ 20 октября 2011

Аппаратная регулировка громкости

Я пытаюсь понять, что лучше всего делать с приложениями, которые в основном молчат, но иногда издают звук. Такие приложения могут воспользоваться преимуществом бокового управления громкостью на устройствах iOS и избежать необходимости создавать виджет управления NSVolume, который, я считаю, не так удобен, как аппаратный боковой контроль громкости. Этот подход будет применяться к таким приложениям, как MapQuest 4 mobile, где вы получаете случайные звуковые подсказки, которые хорошо сочетаются с другими музыкальными проигрывателями (с использованием аудио-приглушения звука), но по большей части молчат. Мне интересно, как другие решают эту проблему.

Я разработал такую ​​систему, которая работает довольно хорошо. В моем подходе я запрашиваю аудио API, чтобы определить, воспроизводится ли другая музыка (iPod, AOL Radio, Pandora и т. Д.), А затем начать аудио сеанс, только если не воспроизводится никакой другой звук. Это связывает аппаратную регулировку громкости с приложением вместо звонка (для iPhone). Задача возникает, когда вы уходите на задний план. Мой подход убивает (деактивирует) сеанс в фоновом режиме, только если приложение не использует аудио. Если воспроизводится звук, сеанс деактивируется в конце воспроизведения.

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

Этот вопрос возник из-за проблем, с которыми я столкнулся при разработке функции голосовой навигации на мобильном телефоне MapQuest 4 для iOS в 2008-2009 годах. В этом приложении мы хотели, чтобы боковой переключатель громкости контролировал громкость сигнала поворота во время работы приложения. Позже я понял, что не могу контролировать громкость звонка после прибытия в пункт назначения и отправки приложения в фоновый режим. Это было много лет назад, но я считаю, что приложение продолжало работать в фоновом режиме, что привело к проблеме. Это интересный случай, когда пользователь перемещается, но отправляет приложение в фоновый режим, следует ли вам продолжить аудио сеанс? Является ли более вероятным, что пользователь захочет изменить громкость приложения или громкость звонка, пока приложение работает в фоновом режиме?

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

Это не так просто, как кажется, но мой подход работает в большинстве случаев. Тем не менее мне интересно, есть ли другие более жизнеспособные решения проблемы. Что делают другие люди? Было бы более разумно просто включить регулятор громкости в представление, которое автоматически скользит в / из места? Есть вещи, которые я не учел? Как вы подошли к проблеме? Есть ли у вас общие предложения?

...