2013-01-19 12 views
10

Sto imparando l'audio principale. Per qualche motivo, il suono del grafico di elaborazione viene riprodotto solo attraverso i deboli "auricolari" (quando si tiene il dispositivo all'orecchio) ma non sui normali altoparlanti dell'iPhone.Come riprodurre l'audio tramite gli altoparlanti piuttosto che gli altoparlanti molto più deboli?

Questo è il codice che definisce la sessione audio ma non riesco a vedere dove si configura il percorso audio:

- (void) setupAudioSession { 

    AVAudioSession *mySession = [AVAudioSession sharedInstance]; 

    // Specify that this object is the delegate of the audio session, so that 
    // this object's endInterruption method will be invoked when needed. 
    [mySession setDelegate: self]; 

    // Assign the Playback category to the audio session. 
    NSError *audioSessionError = nil; 
    [mySession setCategory: AVAudioSessionCategoryPlayAndRecord//AVAudioSessionCategoryPlayback 
        error: &audioSessionError]; 

    if (audioSessionError != nil) { 

     NSLog (@"Error setting audio session category."); 
     return; 
    } 

    // Request the desired hardware sample rate. 
    self.graphSampleRate = 44100.0; // Hertz 

    [mySession setPreferredHardwareSampleRate: graphSampleRate 
             error: &audioSessionError]; 

    if (audioSessionError != nil) { 

     NSLog (@"Error setting preferred hardware sample rate."); 
     return; 
    } 

    // Activate the audio session 
    [mySession setActive: YES 
        error: &audioSessionError]; 

    if (audioSessionError != nil) { 

     NSLog (@"Error activating audio session during initial setup."); 
     return; 
    } 

    // Obtain the actual hardware sample rate and store it for later use in the audio processing graph. 
    self.graphSampleRate = [mySession currentHardwareSampleRate]; 

    // Register the audio route change listener callback function with the audio session. 
    AudioSessionAddPropertyListener (
     kAudioSessionProperty_AudioRouteChange, 
     audioRouteChangeListenerCallback, 
     self 
    ); 
} 

A tal punto nel core audio si dice "giocare con oltre altoparlanti" quando si gioca suona con unità audio?

risposta

4

Ho avuto lo stesso problema. È venuto fuori che ha qualcosa a che fare con la categoria "gioca e registra". Ho solo bisogno di reindirizzare l'uscita audio.

UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; 

AudioSessionSetProperty (
    kAudioSessionProperty_OverrideAudioRoute, 
    sizeof (audioRouteOverride), 
    &audioRouteOverride 
); 

Fonte:

+0

provato ma non ha funzionato, user523234 soluzione è che cosa ha funzionato per me. – blackmoon

6

è possibile utilizzare il setCategorywithOption:

[mySession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:&audioSessionError]; 
+0

Grazie, funziona perfettamente. – blackmoon

Problemi correlati