AVAudioPlayer through speakers

I got the following code:

- (id)init {
    if (self = [super init]) {
        UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
        AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);    

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

        [[AVAudioSession sharedInstance] setDelegate:self];
        [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
        [[AVAudioSession sharedInstance] setActive:YES error:nil];
    }
    return self;
}

But for some reason, the sound does not want to leave the speakers, can someone see what I'm doing wrong?

The code I use for playback is:

AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFilePathURL error:nil];
[player prepareToPlay];
[player setVolume:1.0];
[player play];
+5
source share
8 answers

I used the AudioToolbox framework, so I initialized my audio session as follows:

AudioSessionInitialize(NULL, NULL, NULL, NULL);

Here is the rest of my code that I used to set up the audio session. I did not redefine the audio track, and I also think that this is not necessary.

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
OSStatus err = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
                                       sizeof(sessionCategory),
                                       &sessionCategory);
AudioSessionSetActive(TRUE);
if (err) {
    NSLog(@"AudioSessionSetProperty kAudioSessionProperty_AudioCategory failed: %d", err);
}
+2
source

This is picky about how you set it up ...

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(audioRouteOverride), &audioRouteOverride);

AVAudioSessionCategoryPlayAndRecord, . , , AVAudioPlayer .

, , . , Skype . , !:)

Apple : http://developer.apple.com/library/ios/#documentation/AudioToolbox/Reference/AudioSessionServicesReference/Reference/reference.html

kAudioSessionProperty_OverrideAudioRoute

+4

iOS7 AudioSessionSetProperty . , iOS7:

fooobar.com/questions/116723/...

+4

http://ruckt.info/playing-sound-through-iphone-speaker/ .

- configureAVAudioSession - iOS 7.0. : [self configureAVAudioSession].

- (void) configureAVAudioSession //To play through main iPhone Speakers
{
    //get your app audioSession singleton object
    AVAudioSession* session = [AVAudioSession sharedInstance];

    //error handling
    BOOL success;
    NSError* error;

    //set the audioSession category.
    //Needs to be Record or PlayAndRecord to use audioRouteOverride:

    success = [session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];

    if (!success)  
    {
        NSLog(@"AVAudioSession error setting category:%@",error);
    }
    //set the audioSession override
    success = [session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error];
    if (!success)  
    {
        NSLog(@"AVAudioSession error overrideOutputAudioPort:%@",error);
    }
    //activate the audio session
    success = [session setActive:YES error:&error];
    if (!success) 
    {
        NSLog(@"AVAudioSession error activating: %@",error);
    }
    else 
    {
        NSLog(@"audioSession active");
    }
}
+3

.

, SpeakHere. , .

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

, . , , .

+2

, , AudioToolbox. , , , , , . ( MP3 WAV)

, , URL- ?

+1

, .

AVAudioSessionCategoryOption ( ) DefaultToSpeaker. ( ):

(, ) , . , , (, ). , iPhone ; iPad iPod touch .

, setCategory:, , :

let session = AVAudioSession.sharedInstance()
try session.setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions: [.DefaultToSpeaker])
+1

:

NSError *error;
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error];    
if(error) { 
    NSLog(@"STKAudioManager: AudioSession cannot use speakers");
}
0

All Articles