Como gravar e reproduzir sons no aplicativo do iPhone?

Eu tentei usar AVAudioSession e AVAudioPlayer para gravar e reproduzir sons, mas o volume do som é muito baixo.

Eu tentei colocar o valor do volume de AVAudioPlayer para 1.0 e mais, mas não ajudou muito.

Quais poderiam ser minhas outras opções para gravar sons que podem ser altos o suficiente para serem reproduzidos?

Este código deve ser útil para você:

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

Aumentará o volume. A funcionalidade do código é converter o som comum em som de alto-falante no seu iPhone. É por isso que o kAudioSessionOverrideAudioRoute_Speaker é usado.

Desde iOS7 você pode corrigir esse problema diretamente com AVAudioSession

O método overrideOutputAudioPort faz o mesmo que AudioSessionSetProperty

 NSError *setOverrideError; NSError *setCategoryError; AVAudioSession *session = [AVAudioSession sharedInstance]; [session setCategory:AVAudioSessionCategoryPlayAndRecord error:&setCategoryError]; if(setCategoryError){ NSLog(@"%@", [setCategoryError description]); } [session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&setOverrideError]; if(setOverrideError){ NSLog(@"%@", [setOverrideError description]); } 

Versão rápida:

  import AVFoundation var overrideError : NSError? if AVAudioSession.sharedInstance().overrideOutputAudioPort(.Speaker, error: &error){ }else{ print("error in overrideOutputAudioPort " + overrideError!.localizedDescription) } 

Swift 2:

  do { try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.Speaker) } catch { } 

O código a seguir corrigiu esse problema para mim:

 [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error: nil]; [[AVAudioSession sharedInstance] setActive: YES error: nil]; UInt32 doChangeDefault = 1; AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof(doChangeDefault), &doChangeDefault); 

HOMEM, tente isso.

 AVAudioSession *session = [AVAudioSession sharedInstance]; NSError *setCategoryError = nil; if (![session setCategory:AVAudioSessionCategoryPlayback withOptions:kAudioSessionOverrideAudioRoute_Speaker error:&setCategoryError]) { // handle error } NSError *error; NSData * data = [NSData dataWithContentsOfURL:self.playlet.urlSound]; self.audioPlayer = [[AVAudioPlayer alloc] initWithData:data fileTypeHint:@"aac" error:&error]; self.audioPlayer.delegate = self; if (error) NSLog(@"Error: %@", [error localizedDescription]); else [_audioPlayer play]; 

basta definir este erro [session overrideOutputAudioPort: AVAudioSessionPortOverrideSpeaker: & setOverrideError]; Funciona para mim.

    Intereting Posts