iPhone接近传感器
iPhone SDK可以利用iPhone的接近传感器吗?如果是这样,为什么没有人利用它们呢?我可以想象一些不错的用途。
例如,在赛车游戏中,我们可以将手指放在接近传感器上,而不用拇指占用屏幕上的房地产。当然,如果这是我们唯一的选择,则iPod touch用户将无法使用该应用程序。
接近传感器是否能告诉我们我们有多近,或者前方是否有物体?
解决方案
没有为此的公共API。
这些接近传感器基本上是导体矩阵。垂直的"电线"是绝缘子薄板的一侧的走线,水平的是另一侧的走线。交叉点用作电容器。手指带有静电荷,因此每个结点的电容随距离而变化。 FET放大信号,并通过偏置设置阈值。实际上,该电路比之复杂,因为它必须检测相对变化并抑制噪声。
但是无论如何,传感器网格告诉是已经感应到场效应,并且场效应是物体的特征,其大小与指尖的大小有关,并停留在显示器的表面上。计算电容性扰动的质心(可能是通过硬件),并且(大概)将坐标报告为端口上的数字,该数字很可能会被中断引起设备OS的注意。在像iPhone这样性感的东西中,可能有最后十几个位置的缓冲区,以便可以确定方向和速度。这些可能也是由硬件计算的,并在同一端口上显示为数字。
假设意思是当我们将它握在耳朵上时会关闭屏幕的传感器,我敢肯定这只是耳机内部的红外传感器。如果我们启动电话应用程序(不必打个电话)并按住某些东西在耳机上投射阴影,则可以关闭显示屏。
当我们询问此问题时,无法通过公共API进行访问。现在,我们可以通过UIDevice的proximityState
属性访问传感器的状态。但是,它对游戏没有太大用,因为它只是开/关,而不是近/远的量度。另外,它仅在iPhone上可用,而在iPod touch上不可用。
有一个公共的API。 -[UIApplication setProximitySensingEnabled:(BOOL)]将打开该功能。顺便说一句,它似乎没有使用光传感器,因为接近感测会在黑暗的房间里进行调整。
但是,当我们将手机抬起时,API调用基本上使屏幕变黑。不幸的是,它对于交互没有用。
@Dipak Patel和@Coderer
我们可以在以下位置下载工作代码
http://spazout.com/google_cheats_independent_iphone_developers_screwed
它具有UIApplication中未记录的方法接近状态更改的有效实现。
希望这可以帮助。
接近传感器通过测量红外反射率来工作。如果将iPhone握在网络摄像头上,则可以看到一个小的脉冲IR LED。
在iPhone 3.0中,对接近传感器有官方支持。看看文档中的" UIDevice接近度监视器启用"。
显然,如果状态栏处于横向,则接近传感器将永远不会打开。
即,如果我们致电:
[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeLeft;
我们将不再收到"接近:开启"通知。
这肯定在OS 3.0上发生,我无法在2.X设备上进行测试,因为我没有带接近传感器的设备。
这似乎是一个错误。
接近传感器和环境光传感器之间存在很多混淆。 iPhone兼有。 Touch没有接近传感器,因此对于用户输入来说是一个糟糕的选择。无论如何,这都是一个坏主意,因为苹果没有义务将其放置在未来设备中的同一位置。我们不应该知道或者关心它在哪里。
接近传感器通过向红外LED发出脉冲并测量反射率来工作。我们可以使用iSight相机看到此信息(大多数数码相机对红外敏感。)只需启动Photo Booth,在电话上发起呼叫(或者播放语音邮件),然后将其指向iSight相机即可。注意听筒旁边的闪光灯;用手指覆盖它,屏幕将变黑。
此时,环境光传感器的API显然是私有的。
要关闭屏幕,可以想象使用多个传感器来确定是否应该关闭屏幕。如果将iphone靠近脸部(或者带些微电荷的其他物体)放置,或者仅非常紧密地放置在iPhone 6中,则Cryptognome描述的IR接近传感器与Peter Wone描述的触摸屏传感器可以一起工作。 -动画。