我通过扬声器回放音乐问题。我在以下链接如何将 AVAudioPlayer 输出到扬声器中找到了一个例子,但问题是如何确保我通过“扬声器”成功实现了播放音乐?我把代码编写为链接,但在 iphone 模拟器上激活“扬声器”之前和之后似乎没有区别(在 macbook 上)!
更新:
下面是我激活扬声器的方式。
UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord ; // 1
AudioSessionSetProperty (
kAudioSessionProperty_AudioCategory, // 2
sizeof (sessionCategory), // 3
&sessionCategory // 4
);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; // 1
AudioSessionSetProperty (
kAudioSessionProperty_OverrideAudioRoute, // 2
sizeof (audioRouteOverride), // 3
&audioRouteOverride // 4
);
以下是我停用扬声器的方式
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_None; // 1
AudioSessionSetProperty (
kAudioSessionProperty_OverrideAudioRoute, // 2
sizeof (audioRouteOverride), // 3
&audioRouteOverride // 4
);
当我试图检查 kAudioSessionProperty_AudioRoute 的内容为 NSLog(@“%@”,kAudioSessionProperty_AudioRoute); ,模拟器崩溃了。
我查阅文档,CFStringRef 与 NSString 类型几乎相同。因此,使用 NSLog 打印 kAudioSessionProperty_AudioRoute 的值是合理的。
如你所说,kAudioSessionProperty_AudioRoute 应该是“耳机”或“扬声器”如果我粘贴的代码是正确的,我仍然无法制作,我激活扬声器的方式是正确的。你能帮助我吗?
2 回答
你的 macbook 只有一套扬声器,所以你只能听到它。手机底部有接收器耳机和扬声器(您想要使用它)。
只需检查
kAudioSessionProperty_AudioRoute
设置为什么。Apple 声明:
有关覆盖扬声器属性的更多信息:
kAudioSessionProperty_OverrideCategoryDefaultToSpeaker ..指定在没有连接其他音频路径(如耳机)时是否将音频路由到扬声器(而不是接收器)。默认情况下,此属性的值为 FALSE(0)。一个 read/write UInt32 值。
此属性通过音频路径更改(例如插入或拔出耳机时)和中断时保留其值;只有在音频会话类别更改时,它才会恢复为默认值。此属性只能与 kAudioSessionCategory_PlayAndRecord(或等效的 AVAudioSessionCategoryRecord)类别一起使用。
另见 kAudioSessionProperty_OverrideAudioRoute。
我有同样的问题 ;
但最终通过这种方式改变了....
然后..我创建了一个名为(void DisableSpeakerPhone();)的新方法来反转(EnableSpeakerPhone)方法
现在,让切换器或任何 btn 直接调用方法...