Я бы осторожно позвонил setValue
на MPVolumeView
, поскольку он, вероятно, не будет ничего делать, кроме обновления внешнего вида ползунка, но не фактического уровня громкости устройства.Вместо этого вам придется вызывать _commitVolumeChange
, который является частным API и, скорее всего, отклонит ваше приложение.
Короткий ответ о том, как управлять громкостью: это действительно зависит от того, что вы пытаетесь контролировать громкостью,
Если вам нужен вид элемента управления «каждый звук в приложении», вы можете использовать MPVolumeView
, но вы не можете изменить его значение программным путем.В этом случае вы сможете изменить громкость только путем перемещения ползунка одним касанием или с помощью кнопок регулировки громкости на боковой панели устройства.Лучше всего создать глобальный объект, который хранит уровень громкости, который любой из ваших объектов может прочитать до того, как он начнет воспроизводить свой звук.
Если это объект AVAudioPlayer
, вы должны создать объект и использовать [theAudioPlayerObject setVolume: someFloat];
, где someFloat
- это значение в диапазоне от 0,0 до 1,0.
Если это объект SystemSound
Вы не можете регулировать громкость.
Если это AudioQueue
, вы бы изменили его с помощью AudioQueueSetParameter
Как я уже сказал ... все зависит от как вы воспроизводите звук.
Обновление на основе комментария
Для этого конкретного примера вы должны установить громкость следующим образом:
Добавить в файл AudioStreamer.h
- (void)setVolume:(float)Level;
Добавить в файл AudioStreamer.m
- (void)setVolume:(float)Level
{
OSStatus errorMsg = AudioQueueSetParameter(audioQueue, kAudioQueueParam_Volume, Level);
if (errorMsg) {
NSLog(@"AudioQueueSetParameter returned %d when setting the volume.", errorMsg);
}
}
Добавьте к контроллеру представления, где будет находиться ручка громкости (это происходит в файле .m. Я просто сделал это очень быстро, как пару кнопок UIB, вам придется сделать это самостоятельно), и установите IBAction для измененияобъем для данного значения (вы можете передать от 0,0 до 1,0 как число с плавающей запятой)
- (IBAction)volumeUp:(id)sender
{
[streamer setVolume:1.0];
}
- (IBAction)volumeDown:(id)sender
{
[streamer setVolume:0.0];
}