AVAudioPlayer通过扬声器

Mar*_*ark 5 iphone avaudioplayer speaker

我得到以下代码:

- (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;
}
Run Code Online (Sandbox Code Playgroud)

但不知何故,声音不想从扬声器中传出,有人能看出我做错了吗?

我用来玩的代码是:

AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFilePathURL error:nil];
[player prepareToPlay];
[player setVolume:1.0];
[player play];
Run Code Online (Sandbox Code Playgroud)

sti*_*igi 2

我使用了 AudioToolbox 框架,这就是我初始化音频会话的原因,如下所示:

AudioSessionInitialize(NULL, NULL, NULL, NULL);
Run Code Online (Sandbox Code Playgroud)

这是我用来配置音频会话的其余代码。我没有覆盖音频路线,我也认为这是没有必要的。

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
OSStatus err = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
                                       sizeof(sessionCategory),
                                       &sessionCategory);
AudioSessionSetActive(TRUE);
if (err) {
    NSLog(@"AudioSessionSetProperty kAudioSessionProperty_AudioCategory failed: %d", err);
}
Run Code Online (Sandbox Code Playgroud)