我正在用这个代码测试接近感应器:
final SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
final Sensor proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
sensorManager.registerListener(this, proximitySensor, SensorManager.SENSOR_DELAY_FASTEST);当我的手远离传感器时,我只能得到5.0的值,当我的手完全关闭传感器时,我只能得到0.0的值。(我在Nexus S,4.1上测试)我能得到0到5之间的值吗?
发布于 2013-06-02 06:17:22
在许多设备上,接近感应器本质上是布尔型的- 'near‘(0)或'far’(5),但这取决于实际使用的接近感应器。
我没有Nexus,所以我无法验证这台设备,但我猜它和我的三星GS3很相似,它报告了以下信息:名称: GP2A接近传感器供应商:夏普版本:1电源: 0.75最大范围: 5.0分辨率: 5.0
正如您在GS3上看到的,分辨率与最大范围相同,所以无论我做什么,0和5都是唯一的值。
你可以使用像'Android Sensor Box'这样的应用程序或者使用Sensor API的getMaximumRange()和getResolution()方法来检查你自己的设备。
发布于 2015-04-30 05:32:48
另外,请注意,每个制造商报告的接近传感器近端和远端状态的值都不同。最重要的是,一些智能手机的getMaximumRange()返回的值远远高于onSensorChanged中报告的值。因此,您不能依赖电话报告的任何值。我想出的唯一解决方案是监控onSensorChanged中报告的值,并记住最高值,如果值低于最高值,则意味着接近传感器靠近物体。
下面是一些示例:
摩托罗拉Defy:最低-3,最高-100,getMaximumRange-2.1474836E9
THL T200:最低-0,最高-1,获取最大范围-1
三星S5迷你:最低-0,最高-5,获取最大范围-4096.0
Nexus S,索尼Z2:最低-0,最高-5,获取最大范围-5
https://stackoverflow.com/questions/16876516
复制相似问题