Смотреть значение функции - PullRequest
0 голосов
/ 11 марта 2009

Я пытаюсь создать простое приложение для iphone с двумя кнопками: «Пуск» и «Стоп». Когда вы нажимаете «start», он начинает слушать громкость микрофона телефона и показывает, как громко вы говорите в микрофон. Когда вы нажимаете «Стоп», он перестает слушать.

Я нашел отличный класс с именем SCListener , но я не уверен, как его реализовать. Прямо сейчас у меня есть кнопка, подключенная к следующему коду

-(IBAction)getVolume
{
    SCListener *listener = [SCListener sharedListener];
    [listener listen];
    Float32 peakPower = [listener peakPower];
    NSString *theString = [NSString stringWithFormat:@"Level is: %1.2f", peakPower];
    [volumeLabel setText:theString];
}

Это прекрасно работает, но только один раз получит громкость. Я пытался сделать что-то вроде:

[listener addObserver:self 
           forKeyPath:@"peakPower"               
              options:NSKeyValueObservingOptionOld 
              context:NULL];

Но так как peakPower - это метод, а не переменная, я не могу поместить наблюдателя в него. Как бы я использовал класс, такой как SCListener , чтобы настроить приложение, позволяющее пользователю нажимать кнопку и иметь ярлык постоянно обновление?

Спасибо, JP

Ответы [ 2 ]

0 голосов
/ 11 марта 2009

Чак сказал

Самое простое решение: выберите необходимое разрешение и проведите таймер опроса вашего SCListener с такой скоростью

Согласовано. Более сложный раствор: сделайте SCListener KVO совместимым после чтения документов Apple и внесите результаты в сообщество. Это сделает ваш код чище, научит вас, как работает KVO, и решит проблемы других людей с помощью SCListener.

Монитор iPhone микрофон Объем iPhone Mic

0 голосов
/ 11 марта 2009

Причина, по которой KVO не работает, не имеет ничего общего с тем фактом, что это «не переменная» КВО наблюдает за ключами , а не переменными. Вполне возможно наблюдать свойство без базовой переменной. Причина, по которой он не будет работать в этом случае, заключается в том, что SCListener не генерирует уведомления KVO.

Самое простое решение: выберите необходимое разрешение и проведите таймер опроса вашего SCListener с такой скоростью.

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