用户移动手机时更改输出扬声器

时间:2015-11-17 12:32:37

标签: ios objective-c iphone avplayer avaudiosession

我的应用可让用户听到声音文件,并使用AVAudioPlayer进行播放 我在一些应用程序中看到了一个非常好的行为,当用户将手机放在耳边时,声音扬声器从普通扬声器变为耳机扬声器。

我现在知道从哪里开始,我应该检测手机的移动并更改输出扬声器,还是有任何本机实现此行为?

2 个答案:

答案 0 :(得分:0)

实现此目的的最直接途径是在UIDevice中使用邻近监控。接近监控可以告诉您手机是否靠近用户。

倾听UIDeviceOrientationDidChangeNotification并相应地对proximityState更改做出反应 - 在您的情况下,重新路由音频。

对类似问题here有一个彻底的答案。该答案包括用于组合设备运动以提高准确度的补充细节。

答案 1 :(得分:0)

您正在寻找的是接近传感器(iphone耳机附近的小硬件),而不是任何运动传感机制。接近传感器可以通过公共API通过UIDevice的proximityState属性访问,该属性只返回一个布尔值,指示传感器是否靠近用户:proximityState
根据该值,您可以继续将音频路由到耳机。这可以使用AVAudioSession类来实现,并专门将类别(setCategory:error)设置为AVAudioSessionCategoryPlayAndRecord