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

11

经过一番搜索后,我了解到“接近传感器”是用于在设备靠近/远离用户时开启/关闭屏幕的。我观看了这个视频(从第30秒开始观看),对这个酷炫的东西感到惊讶。我想在我的应用程序中实现它。

但是我得知当 proximityMonitoringEnabledYES 时,没有公共 API 可以保护屏幕锁定。那么上述应用程序是如何做到的呢?

为了更清楚地理解,我复制了一些代码。

启用接近传感器:

[[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,我该如何防止屏幕自动关闭?有解决方案吗?如果有的话,能否请你帮助我解决这个问题。 - MANCHIKANTI KRISHNAKISHORE
1个回答

2
屏幕锁定可以开启/关闭。
[UIApplication sharedApplication].idleTimerDisabled = YES;

即使将此代码放在 NSLog(@"Device is close to user."); 旁边也不起作用。屏幕仍会自动锁定。 - Confused
看起来这里可能有一个错误。首先尝试在applicationDidFinishLaunching或者[[UIDevice currentDevice] setProximityMonitoringEnabled:YES];之后将其设置为NO,然后再设置为YES。请查看此链接:http://iosskill.blogspot.ro/2013/08/disable-sleep-mode-programmatically.html - Templar
我在之前的评论之前就尝试过了,但那也没有帮助 :( - Confused

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接