onSensorChanged()未在Android上触发(nVidia Shield Tablet)

时间:2015-06-09 16:55:04

标签: android nvidia android-sensors

我正在尝试为nVidia盾牌创建增强现实应用。 我在另一台Android设备上尝试了我的应用程 不幸的是,在屏蔽上,onSensorChanged事件不会被触发。

这是我的代码:

        _sensorEventListener = new SensorEventListener()
        {
            public void onSensorChanged(SensorEvent event) {
                AndroidAttitude.this.processSensorEvent(event);
            }

            public void onAccuracyChanged(Sensor sensor, int accuracy)
            {
            }
        };

        Thread sensorThread = new Thread(new Runnable()
        {
            public void run() {
                Looper.prepare();

                _sensorLooper = Looper.myLooper();
                Handler handler = new Handler();

                _sensorManager = (SensorManager)_context.getSystemService("sensor");

                Sensor sensor = _sensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);
                _sensorManager.registerListener(_sensorEventListener, sensor, 0, _sensorManager.SENSOR_DELAY_GAME);

                Looper.loop();
            }
        });

        sensorThread.start();

这就是我将值转换为旋转矩阵的地方:

private synchronized void processSensorEvent(SensorEvent event)
{
    float[] rotationVector = { -event.values[1], event.values[0], event.values[2] };

    float[] quaternion = new float[4];
    float[] rotationMatrix = new float[16];

    _sensorManager.getQuaternionFromVector(quaternion, rotationVector);
    _sensorManager.getRotationMatrixFromVector(rotationMatrix, rotationVector);

}

知道为什么它不起作用?

4 个答案:

答案 0 :(得分:1)

好的,如果您必须使用TYPE_ROTATION_VECTOR,则从SENSOR_DELAY_GAME更改为SENSOR_DELAY_NORMAL

  Sensor sensor = _sensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);
        _sensorManager.registerListener(_sensorEventListener, sensor, 0, _sensorManager.SENSOR_DELAY_NORMAL)

答案 1 :(得分:0)

您是否尝试过SENSOR_DELAY_FASTEST?

答案 2 :(得分:0)

如果传入空registerListenersensor不会抛出异常,则应检查sensor null。您的设备似乎没有Sensor.TYPE_ROTATION_VECTOR

答案 3 :(得分:0)

所以..我刚刚发现了问题的来源。 我的平板电脑的磁性盖子弄乱了磁力计,导致游戏旋转矢量传感器和磁场传感器不发送数据。 我无法相信我花了好几个小时试图解决这个问题......