Я пишу очень простое приложение, которое воспроизводит звук при нажатии кнопки. Поскольку эта кнопка не имеет большого смысла, когда устройство отключено, я хочу отключить ее, когда громкость звука устройства равна нулю. (И впоследствии включите его снова, когда громкость снова увеличится. )
Я ищу рабочий (и безопасный для AppStore) способ определения текущей настройки громкости и получения уведомления / обратного вызова при изменении уровня громкости. Я не хочу изменять настройку громкости .
Все это реализовано в моем ViewController
, где используется указанная кнопка. Я тестировал это на iPhone 4 под управлением iOS 4.0.1 и 4.0.2, а также на iPhone 3G под управлением 4.0.1. Создан с помощью iOS SDK 4.0.2 с llvm 1.5. (Использование gcc или llvm-gcc ничего не улучшает.) Во время реализации сборки нет никаких проблем, ни ошибок, ни предупреждений. Статический анализатор тоже доволен.
Вот то, что я пробовал до сих пор, но безуспешно.
Вслед за Apple ' Тем не менее, у меня это не работает.
Еще один способ, который я пробовал, - это зарегистрироваться в NSNotificationCenter
вот так.
// sharedAVSystemController
AudioSessionInitialize(NULL, NULL, NULL, NULL);
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter addObserver:self
selector:@selector(volumeChanged:)
name:@"AVSystemController_SystemVolumeDidChangeNotification"
object:nil];
Это должно уведомить мой метод volumeChanged
о любом SystemVolume
изменяется, но на самом деле этого не происходит.
Поскольку общепринятое мнение подсказывает мне, что если кто-то слишком много работает, чтобы чего-то достичь с помощью Какао, он делает что-то в корне неправильно, я ожидаю, что здесь что-то упущено . Трудно поверить, что не существует простого способа получить текущий уровень громкости, но я не смог найти его, используя документацию Apple, образец кода, Google, Apple Developer Форумы или просмотрев видео WWDC 2010.