应用程序的音频无法通过扬声器工作

Posted

技术标签:

【中文标题】应用程序的音频无法通过扬声器工作【英文标题】:App's audio not working through speakers 【发布时间】:2012-06-06 20:00:12 【问题描述】:

我的应用中有一个奇怪的错误。我正在使用 AVAudioPlayer 播放声音(它的多个实例),声音通过耳机完美运行,但使用不带耳机的应用程序不会从扬声器发出声音。所有的音频片段都是 AAC 编码的。

我已尝试通过 Objective-C API ([AVAudiosession sharedInstance]) 和 C API 设置 AVAudioSession 属性,但这些选项似乎都不起作用。

【问题讨论】:

你试过调高音量吗?它可以静音,内部扬声器有单独的音量级别。 不错,音量不错。 【参考方案1】:

接受的答案(在 ios7 中)对我不起作用,以下代码确实有效。 (我没有足够的评论点,将其作为单独的答案发布)

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord
                                 withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker
                                       error:nil];

【讨论】:

+1 !这也帮助我解决了 AVSpeechUtterance 音量极低的半相关问题。非常感谢你!见***.com/a/28922543/2578205【参考方案2】:

iPhone 上的问题 - 当声音非常低时 - 似乎是从手机耳机中出来的(不是 耳机插孔)而不是底部扬声器 - 更改为 DEFAULT TO SPEAKER

//http://***.com/questions/3104562/avaudiorecorder-avaudioplayer-sound-output-on-internal-speaker-how-to-chang


UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty (
    kAudioSessionProperty_OverrideCategoryDefaultToSpeaker,
    sizeof (doChangeDefaultRoute),
    &doChangeDefaultRoute
);

【讨论】:

【参考方案3】:

对于那些使用Swift Syntax的人...

以下对我有用。

do 
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions: AVAudioSessionCategoryOptions.DefaultToSpeaker)
    
catch 
          print("can't default to speaker ")
      

【讨论】:

以上是关于应用程序的音频无法通过扬声器工作的主要内容,如果未能解决你的问题,请参考以下文章

无法让 JACK 音频/网络插孔通过 LAN 工作

IOS 应用程序 - 蓝牙音频启用

音频文件:仅通过一个扬声器播放数据?

iOS 通过 iPhone 接收器(手机扬声器)播放音频

安卓模拟器可以播放音频吗

iOS 无法在扬声器上播放并将音频会话设置为录制