iphone - 通过扬声器的 AVAudioPlayer

标签 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;
}

但不知怎的,声音不想从扬声器中发出,有人能看到我做错了什么吗?

我用于播放的代码是:

AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFilePathURL error:nil];
[player prepareToPlay];
[player setVolume:1.0];
[player play];

最佳答案

对如何设置它很挑剔......

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

使用AVAudioSessionCategoryPlayAndRecord非常重要,否则路由将无法到达扬声器。设置 Audio Session 的覆盖路由后,您可以使用 AVAudioPlayer 实例并向扬声器发送一些输出。

希望这对其他人有用,就像对我一样。有关于此的文档很分散,但 Skype 应用程序证明这是可能的。坚持下去,我的 friend 们! :)

这里有一些 Apple 文档:http://developer.apple.com/library/ios/#documentation/AudioToolbox/Reference/AudioSessionServicesReference/Reference/reference.html

在页面上搜索kAudioSessionProperty_OverrideAudioRoute

关于iphone - 通过扬声器的 AVAudioPlayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2660836/

相关文章:

iPhone - UIImagePickerControllerDelegate 继承

iphone - 如何解决 iPhone 单元测试中 CALayer 类的警告 "No ' -modelLayer' 找到方法

ios - ios中的声音音量

ios - 在 iOS 上循环播放一段时间的音频

android - 如何在Android中检查天气扬声器是否正在使用?

iphone - 从 iPhone 独立 Web 应用程序的键盘中删除表单助手

iphone - 呈现 UIPopoverviewcontroller

ios - 如何在 SwiftUI 项目中使用 AVAudioPlayer 播放音频

android - 如何在插入 3.5 毫米插孔以使用外部麦克风录制声音时使用内部扬声器播放声音

iOS Novocaine 在扬声器上播放