当前位置:  开发笔记 > IOS > 正文

iPhone接近传感器

如何解决《iPhone接近传感器》经验,为你挑选了6个好方法。

iPhone SDK可以利用iPhone的接近传感器吗?如果是这样,为什么没有人利用它们呢?我可以想象一些不错的用途.

例如,在赛车游戏中,您可以将手指放在接近传感器上,而不是用拇指占据屏幕空间.当然,如果这是您唯一的选择,那么iPod touch用户将无法使用该应用程序.

接近传感器是否会告诉您有多近,或者只是在它前面有什么东西?



1> Brendan Berg..:

还有就是这个公共API. - [UIApplication setProximitySensingEnabled:(BOOL)]将打开该功能.顺便说一句,它似乎没有使用光传感器,因为接近感应会在黑暗的房间里调整.

但是,当您将手机拿到脸上时,API调用基本上会使屏幕空白.遗憾的是,对交互没用.


捉迷藏游戏怎么样:)
UIApplication方法已弃用.在3.0中,您可以使用:[[UIDevice currentDevice] setProximityMonitoringEnabled:YES]; 此外,可以检查属性proximityState,因此如果您轮询该值,它可能是一个原始输入方法.

2> benzado..:

假设你的意思是当你把它拿到耳朵时关闭屏幕的传感器,我很确定这只是耳机内的红外传感器.如果你启动手机应用程序(你不必打电话)并拿着东西在耳机上投下阴影,你可以关闭显示器.

当您提出此问题时,无法通过公共API访问.您现在可以通过UIDevice的proximityState属性访问传感器的状态.然而,它对游戏来说并不是那么有用,因为它只是一个开/关的东西,而不是近/远的衡量标准.此外,它仅适用于iPhone而非iPod touch.


这在技术上是不真实的.有一个光传感器可以自动调节屏幕亮度,第二个红外LED /传感器对可以检测到您的脸部接近.(将一张白纸放在手机扬声器末端上方一两英寸处将触发接近传感器,但显示屏仍可在暗室中使用.)

3> 小智..:

显然,如果状态栏处于横向,接近传感器将永远不会打开.即,如果你打电话:

[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeLeft;

您将不再接近:ON通知.

这肯定发生在OS 3.0上,我无法在2.X设备上进行测试,因为我没有配备接近传感器.

这似乎是一个错误.



4> 小智..:

接近传感器通过测量红外反射来工作.如果您将iPhone连接到网络摄像头,您可以看到一个小的脉冲红外LED.



5> David Gish..:

接近传感器和环境光传感器之间存在很多混淆.iPhone同时拥有.Touch没有接近传感器,因此用户输入的选择较差.无论如何,这将是一个坏主意,因为Apple没有义务在未来的设备中将它放在同一个地方; 你不应该知道或关心它在哪里.

接近传感器通过脉冲红外LED并测量反射量来工作.你可以使用你的iSight摄像头看到这一点(大多数数码相机都对IR敏感.)只需启动Photo Booth,在手机上发起呼叫(或播放语音邮件)并将其指向iSight摄像头.注意耳机旁边的闪光灯; 用手指盖住它,屏幕会变黑.

此时环境光传感器的API显然是私密的.



6> Ben Flynn..:

只是要更新,这是可能的.

device = [UIDevice currentDevice];

// Turn on proximity monitoring
[device setProximityMonitoringEnabled:YES];

// To determine if proximity monitoring is available, attempt to enable it.
// If the value of the proximityMonitoringEnabled property remains NO, proximity
// monitoring is not available.

// Detect whether device supports proximity monitoring
proxySupported = [device isProximityMonitoringEnabled];

// Register for proximity notifications
[notificationCenter addObserver:self selector:@selector(proximityChanged:) name:UIDeviceProximityStateDidChangeNotification object:device];

正如benzado指出的那样,您可以使用:

// Returns a BOOL, YES if device is proximate
[device proximityState];

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有