我想禁用接近度监视,以便无论传感器离传感器有多近,屏幕始终保持打开状态。
我尝试使用:
UIDevice.currentDevice.proximityMonitoringEnabled = NO;
通常正常运行,但是,如果我打开VoiceOver,如果覆盖了接近传感器,则屏幕开始变黑。
FYI:我正在为视力不佳的人制作视频通话应用程序(使用CallKit),他们的经验是,如果他们在通话过程中过于靠近屏幕,如果VoiceOver处于打开状态,则屏幕会变黑。
我尝试安装NSTimer来将每秒接近度监视器设置为NO(作为较差的解决方法,也尝试将其设置为YES,然后设置NO。它保持常开状态,但屏幕仍然不亮。
我认为您必须将会话从AVAudioSessionModeVoiceChat
更改为AVAudioSessionModeVideoChat
。然后应该忽略接近传感器
类似的事情应该做:
[[AVAudioSession sharedInstance] setMode: AVAudioSessionModeVideoChat error:&err];
在像您一样使用Apple CallKit的VoIP应用中,您可以在通话期间使用
AVAudioSession
启用和禁用近程监视。默认情况下,proximityMonitoringEnabled
实例属性为NO
。
UIDevice.currentDevice.proximityMonitoringEnabled = NO; // DEFAULT VALUE
但是,如果您使用的是CallKit模块,则无法正常工作。因此,如果要启用邻近监视,请使用AVAudioSessionModeVoiceChat全局变量:
const AVAudioSessionMode AVAudioSessionModeVoiceChat;
并再次禁用接近度监视,请使用AVAudioSessionModeVideoChat全局变量:
const AVAudioSessionMode AVAudioSessionModeVideoChat;
两个变量都与AVAudioSessionCategoryPlayAndRecord全局变量一起使用:
const AVAudioSessionCategory AVAudioSessionCategoryPlayAndRecord;