2012-02-14 20 views
8

Używam AVAudioPlayer do odtwarzania pliku .caf. Mój problem polega na tym, że nie jest wystarczająco głośny dla mojego celu. Ponieważ dźwięk dzwonka na iPhone jest znacznie głośniejszy, zastanawiałem się, jak zarchiwizować ten tom. Próbowałem już zmodyfikować plik .caf, ale bez powodzenia. Jakieś pomysły?Maksymalny poziom głośności IOS dla AVAudioPlayer?

Kod używam tej pory:

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

Edit:

[appSoundPlayer setVolume: 1.0]; 

Thx Martin

Odpowiedz

13

Można zawsze ustawić głośność na rzeczywistej maksymalnej np

[appSoundPlayer setVolume: 1.0]; 

Poza tym, prawdopodobnie będziesz musiał sam edytować plik.

+0

Thx Peter, right, 1.0 .. skopiuj i wklej błąd. Ale nadal jest zbyt cicho ( – MartinHappyCoding

8

Martin, czy zapewniłeś, że głośność systemu jest maksymalna? Jeśli nie, to powinieneś użyć MPMusicPlayerController, aby podkręcić głośność systemu do maksimum, a nie tylko do maksimum avaudioplayer. Możesz go obrócić na długość klipu dźwiękowego, a następnie przywrócić go do pierwotnego poziomu głośności, który ustawił użytkownik.

// 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 
+1

Hej, nie zapomnij połączyć się z ramą MediaPlayer – Yeung

+0

Dzięki! Przydatny komentarz może być taki, że właściwość 'volume' z' MPMusicPlayerController' jest nieaktualna od wersji iOS 7.0, jak podano [tutaj] (https) : //developer.apple.com/library/ios/documentation/MediaPlayer/Reference/MPMusicPlayerController_ClassReference/#//apple_ref/occ/instp/MPMusicPlayerController/volume). – Alex

Powiązane problemy