Воспроизведите максимальную громкость динамика, а затем восстановите предыдущую громкость с помощью AVAudioPlayer IOS.

Мне удалось направить звук на громкоговоритель, однако он по-прежнему не будет воспроизводиться на максимально возможной громкости. Я пробовал [audioAlert setVolume:1.0], и он по-прежнему остается на том уровне громкости, который в настоящее время установлен пользователем. Если у кого-то есть идея, что я делаю неправильно, я был бы очень признателен.

Вот мой код:

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:NULL];

    UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
    AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);

    NSURL* soundUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"HsTR_soundEFX_2-1" ofType:@"mp3"]];
   audioAlert= [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil];
    audioAlert.delegate = self;
    [audioAlert setVolume:1.0];
    [audioAlert prepareToPlay];
    [audioAlert play];

Спасибо Полу Перри!

СЕЙЧАС РЕШЕНО:

Я включил немного больше, чтобы также вернуть его к предыдущему объему, используя код ниже:

 AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:NULL];

    UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
    AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);

    NSURL* soundUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"HsTR_soundEFX_2-1" ofType:@"mp3"]];
   audioAlert= [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil];
    audioAlert.delegate = self;
    [audioAlert prepareToPlay];
    float maxVolume = 1.0;
    float currentVolume=[MPMusicPlayerController applicationMusicPlayer].volume;
    [[MPMusicPlayerController applicationMusicPlayer] setVolume:maxVolume];
    [audioAlert play];
   //set up timer to wait until audioAlert is finished playing,
   // and then call the line below to set the volume back to it's original setting
    [[MPMusicPlayerController applicationMusicPlayer]setVolume:currentVolume];

person Tommy Devoy    schedule 12.09.2012    source источник


Ответы (2)


Это сбросит громкость всей системы на максимум.

плавающий объем = 1,0; [[MPMusicPlayerController applicationMusicPlayer] setVolume:volume];

person PaulPerry    schedule 13.09.2012
comment
Громкость MPMusicPlayerController больше не рекомендуется. - person Abdul Yasin; 16.11.2016

Как насчет того, чтобы сначала инициализировать его значением 0, а затем сразу после [audioAlert prepareToPlay] снова установить значение 1:

[audioAlert prepareToPlay]
[audioAlert setVolume:1.0]
person Morufu Salawu    schedule 13.09.2012