Я пишу очень простое приложение, которое воспроизводит звук при нажатии кнопки. Поскольку эта кнопка не имеет большого смысла, когда устройство установлено в режим без звука, я хочу отключить ее, когда громкость звука устройства равна нулю. (И затем снова включите его, когда громкость снова поднимется.)
Я ищу рабочий (и безопасный для 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 ..