Как получить уровень громкости звука, и уведомления об изменении громкости на 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, я должен зарегистрировать AudioSessionAddPropertyListener для kAudioSessionProperty_CurrentHardwareOutputVolume , который должен работать следующим образом:

// Registering for Volume Change notifications
AudioSessionInitialize(NULL, NULL, NULL, NULL);
returnvalue = AudioSessionAddPropertyListener (

kAudioSessionProperty_CurrentHardwareOutputVolume ,
      audioVolumeChangeListenerCallback,
      self
);

returnvalue равен 0 , что означает, что регистрация обратного вызова работала.

К сожалению, Тем не менее, это не работает для меня.

Еще один способ, которым я пытался, это зарегистрироваться в 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. "phone": "9789234793", "email": " surfingkumar@gmail.com ", "role": "Admin", "empId" ...

Рассмотрим это как строку json,

{"Table" : [{"userid" : "11","name" : "KumarP","designation" : "Business Head",
"phone" : "9789234793","email" : "surfingkumar@gmail.com","role" : "Admin",
   "empId" : "EI003","reportingto" : "KumarP"}]}

и я хочу чтобы моя строка была такой,

{Table:[{ userid: "11", name: "KumarP", designation: "Business Head", 
    phone: "9789234793", email:"surfingkumar@gmail.com", role : "Admin",
       empId : "EI003",reportingto : "KumarP"}]}

Я делаю так, чтобы использовать ее с jlinq ..

7
задан ACP 6 September 2010 в 12:05
поделиться