Как редактировать том объекта SystemSoundID?

Я использую SystemSoundID для создания звука при нажатии кнопки, таким образом:

это объявление объекта:

SystemSoundID soundEffect;

это в viewDidLoad:

NSString *soundPath = [[NSBundle mainBundle]pathForResource:@"create_button_sound" ofType:@"mp3"];

NSURL *soundURL = [NSURL fileURLWithPath:soundPath];

AudioServicesCreateSystemSoundID(CFBridgingRetain(soundURL), &soundEffect);

И наконец, когда кнопка была нажата:

AudioServicesPlaySystemSound(soundEffect);

Как лучше всего контролировать звук эффекта? Я хочу убедиться, что если у кого-то установлен уровень громкости iphone на максимум, чтобы звук не был сумасшедшим громким...

Спасибо@@!

1 ответ

В соответствии с этим SO вопросом ( AudioServicesPlaySystemSound Volume? - немного устаревшим, поскольку Sounds больше не относится к General), вы застрянете из-за глобальной настройки, которая может переопределять громкость для системных звуков.

Обходной путь должен использовать AVAudioPlayer вместо этого, если это возможно.

Пример:

    NSString *soundPath = [[NSBundle mainBundle]pathForResource:@"create_button_sound" ofType:@"mp3"];

    NSURL *soundURL = [NSURL fileURLWithPath:soundPath];
    AVAudioPlayer *mySoundPlayer =[[AVAudioPlayer alloc] soundURL error:&error];
    mySoundPlayer .volume=0.8f; //between 0 and 1
    [mySoundPlayer prepareToPlay];
    mySoundPlayer.numberOfLoops=0; //or more if needed

    [mySoundPlayer play];
Другие вопросы по тегам