使用 LG Nexus 4,Android 4.3
返回值有时是错误的,我不明白为什么。文档说:“如果传感器受支持并成功启用,则为真。”
奇怪的是,我没有看到任何例子是测试 SensorManager.registerListener 的返回值。
奇怪的是,如果我忽略返回错误值,那么一切都按预期工作!
文档:http: //developer.android.com/reference/android/hardware/SensorManager.html
android.hardware.SensorManager, android.hardware.SystemSensorManager
我的代码:
SensorManager sensorMgr = (SensorManager)_context.getSystemService(Context.SENSOR_SERVICE);
if (sensorMgr == null) {
Log.w(TAG, "200410::Sensors not supported");
return false;
}
Sensor sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_PROXIMITY);
result = sensorMgr.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
if( result == false) {
// Normally something should be done here
// since the false return value indicated that registration failed.
// But I found it's better doing nothing since the registration seams to be ok
}
return result;
奇怪的假返回值在 Android 4.3 之前没有发生过
因此,如果没有像所有示例中那样使用结果值,我一切都很好。也许我应该对此感到满意,但是,我有 3 个问题:
- 为什么这个返回值从未在示例中测试过?
- 为什么在 Android 4.3 中返回值为 false?
- 为什么即使返回值为 false 也能正常工作?
我知道这些问题很难回答,但如果我得到其他人有同样问题的信息,我会很高兴。
我对 Sensor.TYPE_ACCELEROMETER 和 Sensor.TYPE_PROXIMITY 的行为相同