IOS максимальный уровень громкости для AVAudioPlayer? - PullRequest
8 голосов
/ 14 февраля 2012

Я использую AVAudioPlayer для воспроизведения файла .caf.Моя проблема: это недостаточно громко для моей цели.Поскольку звук звонка IPhone намного громче, мне было интересно, как я могу заархивировать этот том.Я уже пытался манипулировать файлом .caf, но безуспешно.Есть идеи?

Код, который я использую до сих пор:

    AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL: url error: nil];
self.appSoundPlayer = newPlayer;
[newPlayer release];
[appSoundPlayer prepareToPlay];
[appSoundPlayer setVolume: 0.8];
[appSoundPlayer setDelegate: self];
    [appSoundPlayer play];

Редактировать:

[appSoundPlayer setVolume: 1.0];

Thx Martin

Ответы [ 2 ]

13 голосов
/ 14 февраля 2012

Вы всегда можете установить громкость на фактический максимум, например:

[appSoundPlayer setVolume: 1.0];

Кроме этого, вам, вероятно, придется редактировать сам файл.

8 голосов
/ 14 сентября 2012

Мартин, ты обеспечил максимальную громкость системы? Если нет, вы хотите использовать MPMusicPlayerController для увеличения максимальной громкости системы, а не только максимума avaudioplayer. Вы можете включить его на длину вашего аудиоклипа, а затем установить его обратно на исходную громкость, на которой он был установлен пользователем.

// Import headers. Link to "MediaPlayer Framework"
#import <MediaPlayer/MediaPlayer.h>

//set up audio session
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];//audioAlert is an AVAudioPLayer declared in header

//and whereever you want to play the sound, call the lines below
float currentVolume=[MPMusicPlayerController applicationMusicPlayer].volume; //grab current User volume
[[MPMusicPlayerController applicationMusicPlayer] setVolume:1.0];//set system vol to max
[audioAlert play];
[NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(setVolumeBackToNormal)userInfo:nil repeats:NO];

//and the setVolumeBackToNormal function calls this line below
[[MPMusicPlayerController applicationMusicPlayer]setVolume:currentVolume];//returns volume to original setting
...