如何在 iOS 开发中以编程方式使用接近传感器?

Posted

技术标签:

【中文标题】如何在 iOS 开发中以编程方式使用接近传感器?【英文标题】:How to use proximity sensor programmatically with iOS development? 【发布时间】:2015-09-25 01:52:12 【问题描述】:

经过一番谷歌搜索,我可以理解当设备远离/靠近用户时用于打开/关闭屏幕的“接近传感器”。我看了this video(从第 30 秒开始观看)并对这些很酷的东西感到惊讶。我想在我的应用中实现它。

但我知道当proximityMonitoringEnabledYES 时,没有可用的公共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 6 中以编程方式获取设备的当前方向?

如何在 iOS 8.0+ 中以编程方式打开设备设置应用程序而不是应用程序设置

如何在 ios 中以编程方式添加约束

如何使用 Swift 在 iOS 中以编程方式进行 segue

如何使用自动布局在 ios 中以编程方式在 UIview 上添加 UIbutton

使用 Objective-C 中的 Xcode 在 iOS 中以编程方式制作 UI 元素