iPhone определит громкость нажатия клавиш. - PullRequest
10 голосов
/ 23 сентября 2011

Мне нужно определить, когда пользователь нажимает аппаратные клавиши громкости (безопасный подход в 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");}

Любые советы будут с благодарностью.

1 Ответ

4 голосов
/ 10 апреля 2013

Вам нужно начать аудио сеанс, прежде чем сработает уведомление:

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];

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

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

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