5

使用 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 个问题:

  1. 为什么这个返回值从未在示例中测试过?
  2. 为什么在 Android 4.3 中返回值为 false?
  3. 为什么即使返回值为 false 也能正常工作?

我知道这些问题很难回答,但如果我得到其他人有同样问题的信息,我会很高兴。

我对 Sensor.TYPE_ACCELEROMETER 和 Sensor.TYPE_PROXIMITY 的行为相同

4

0 回答 0