当VoiceOver处于活动状态时,iOS Objective-C关闭邻近度监视

问题描述 投票:1回答:2

我想禁用接近度监视,以便无论传感器离传感器有多近,屏幕始终保持打开状态。

我尝试使用:

UIDevice.currentDevice.proximityMonitoringEnabled = NO;

通常正常运行,但是,如果我打开VoiceOver,如果覆盖了接近传感器,则屏幕开始变黑。

FYI:我正在为视力不佳的人制作视频通话应用程序(使用CallKit),他们的经验是,如果他们在通话过程中过于靠近屏幕,如果VoiceOver处于打开状态,则屏幕会变黑。

我尝试安装NSTimer来将每秒接近度监视器设置为NO(作为较差的解决方法,也尝试将其设置为YES,然后设置NO。它保持常开状态,但屏幕仍然不亮。

ios objective-c voiceover proximitysensor
2个回答
0
投票

我认为您必须将会话从AVAudioSessionModeVoiceChat更改为AVAudioSessionModeVideoChat。然后应该忽略接近传感器

类似的事情应该做:

[[AVAudioSession sharedInstance] setMode: AVAudioSessionModeVideoChat error:&err];

0
投票

在像您一样使用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;
© www.soinside.com 2019 - 2024. All rights reserved.