Как получить уровень громкости звука и уведомления об изменении громкости на iOS?

Я пишу очень простое приложение, которое воспроизводит звук при нажатии кнопки. Поскольку эта кнопка не имеет большого смысла, когда устройство отключено, я хочу отключить ее, когда громкость звука устройства равна нулю. (И впоследствии включите его снова, когда громкость снова увеличится. )

Я ищу рабочий (и безопасный для 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.

56
задан Community 23 May 2017 в 12:01
поделиться