如何在 iOS 开发中以编程方式使用接近传感器?
Posted
技术标签:
【中文标题】如何在 iOS 开发中以编程方式使用接近传感器?【英文标题】:How to use proximity sensor programmatically with iOS development? 【发布时间】:2015-09-25 01:52:12 【问题描述】:经过一番谷歌搜索,我可以理解当设备远离/靠近用户时用于打开/关闭屏幕的“接近传感器”。我看了this video(从第 30 秒开始观看)并对这些很酷的东西感到惊讶。我想在我的应用中实现它。
但我知道当proximityMonitoringEnabled
是YES
时,没有可用的公共API 可以保护屏幕锁定。那么上面的app是怎么做到的呢?
为了清楚起见,我复制了一些代码。
启用接近传感器:
[[UIDevice currentDevice] setProximityMonitoringEnabled:YES];
为传感器变化设置观察器:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sensorStateMonitor:) name:@"UIDeviceProximityStateDidChangeNotification" object:nil];
最后你可以通过这个方法找到接近传感器的状态:
- (void)sensorStateMonitor:(NSNotificationCenter *)notification
if ([[UIDevice currentDevice] proximityState] == YES)
NSLog(@"Device is close to user.");
else
NSLog(@"Device is not closer to user.");
问题:
我想在调用“设备靠近用户”状态时显示一些视图。如果调用了“设备不靠近用户”状态,则希望删除视图。
所以我在sensorStateMonitor:
方法中添加了一个视图并删除了。但是该视图仅在几分之一秒内可见,并且屏幕熄灭了。
我可以防止屏幕自动关闭吗?
只是一头雾水!!
【问题讨论】:
嗨@Confused,我怎样才能防止屏幕自动关闭有什么解决办法吗?如果是的话,你能帮我解决这个问题吗? 【参考方案1】:可以启用/禁用屏幕锁定。
[UIApplication sharedApplication].idleTimerDisabled = YES;
【讨论】:
甚至在 NSLog(@"Device is close to user.");不起作用。屏幕仍然自动锁定。 这似乎有一个错误。尝试在applicationDidFinishLaunching
或[[UIDevice currentDevice] setProximityMonitoringEnabled:YES];
之后将其设置为NO,然后设置为YES。检查此链接:iosskill.blogspot.ro/2013/08/…
我在之前的评论之前尝试过。那也无济于事:(以上是关于如何在 iOS 开发中以编程方式使用接近传感器?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 8.0+ 中以编程方式打开设备设置应用程序而不是应用程序设置
如何使用 Swift 在 iOS 中以编程方式进行 segue