iPhone SDK可以利用iPhone的接近传感器吗?如果是这样,为什么没有人利用它们呢?我可以想象一些不错的用途.
例如,在赛车游戏中,您可以将手指放在接近传感器上,而不是用拇指占据屏幕空间.当然,如果这是您唯一的选择,那么iPod touch用户将无法使用该应用程序.
接近传感器是否会告诉您有多近,或者只是在它前面有什么东西?
还有就是这个公共API. - [UIApplication setProximitySensingEnabled:(BOOL)]将打开该功能.顺便说一句,它似乎没有使用光传感器,因为接近感应会在黑暗的房间里调整.
但是,当您将手机拿到脸上时,API调用基本上会使屏幕空白.遗憾的是,对交互没用.
假设你的意思是当你把它拿到耳朵时关闭屏幕的传感器,我很确定这只是耳机内的红外传感器.如果你启动手机应用程序(你不必打电话)并拿着东西在耳机上投下阴影,你可以关闭显示器.
当您提出此问题时,无法通过公共API访问.您现在可以通过UIDevice的proximityState
属性访问传感器的状态.然而,它对游戏来说并不是那么有用,因为它只是一个开/关的东西,而不是近/远的衡量标准.此外,它仅适用于iPhone而非iPod touch.
显然,如果状态栏处于横向,接近传感器将永远不会打开.即,如果你打电话:
[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeLeft;
您将不再接近:ON通知.
这肯定发生在OS 3.0上,我无法在2.X设备上进行测试,因为我没有配备接近传感器.
这似乎是一个错误.
接近传感器通过测量红外反射来工作.如果您将iPhone连接到网络摄像头,您可以看到一个小的脉冲红外LED.
接近传感器和环境光传感器之间存在很多混淆.iPhone同时拥有.Touch没有接近传感器,因此用户输入的选择较差.无论如何,这将是一个坏主意,因为Apple没有义务在未来的设备中将它放在同一个地方; 你不应该知道或关心它在哪里.
接近传感器通过脉冲红外LED并测量反射量来工作.你可以使用你的iSight摄像头看到这一点(大多数数码相机都对IR敏感.)只需启动Photo Booth,在手机上发起呼叫(或播放语音邮件)并将其指向iSight摄像头.注意耳机旁边的闪光灯; 用手指盖住它,屏幕会变黑.
此时环境光传感器的API显然是私密的.
只是要更新,这是可能的.
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];