iPhone Обнаружение клавиш регулировки громкости нажмите.

Мне нужно определить, когда пользователь нажимает аппаратные клавиши регулировки громкости (безопасный подход в App Store). Я безуспешно пробовал ряд вещей. Вы знаете, как реализовать такой функционал? В настоящее время я регистрируюсь для получения уведомлений, но мне кажется, что они мне не звонят. Вот мой код:

  AudioSessionInitialize(NULL, NULL, NULL, NULL);
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter addObserver:self
                       selector:@selector(volumeChanged:) 
                           name:@"AVSystemController_SystemVolumeDidChangeNotification" 
                         object:nil];

И метод приемника:

-(void)volumeChanged:(NSNotification *)notification{
         NSLog(@"YAY, VOLUME WAS CHANGED");}

Будем признательны за любые советы.


person John S    schedule 23.09.2011    source источник
comment
посмотрите здесь: stackoverflow.com/questions/772832 /   -  person mja    schedule 23.09.2011


Ответы (1)


Вам необходимо начать аудиосеанс до того, как сработает уведомление:

AudioSessionInitialize(NULL, NULL, NULL, NULL); 
AudioSessionSetActive(true); 

Теперь вы можете подписаться на уведомление:

[[NSNotificationCenter defaultCenter] addObserver:self
    selector:@selector(volumeChanged:) 
    name:@"AVSystemController_SystemVolumeDidChangeNotification" 
    object:nil];

Чтобы получить объем:

float volume = [[[notification userInfo] 
    objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"] 
    floatValue];

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

Это решение по-прежнему будет регулировать громкость системы, когда пользователь нажимает клавишу громкости, и отображать наложение громкости. Если вы хотите избежать изменения громкости системы и отображения наложения (по сути, полностью изменить назначение клавиш громкости), см. Этот ответ

person Crake    schedule 10.04.2013