Android-测量与相机的距离

时间:2018-08-01 08:27:36

标签: android distance sensor android-sensors measure

这是我的第一个问题,因此,我将接受所有批评者的意见,以改善我的问题。 我正在开发一个Android应用程序,该应用程序需要测量与摄像头(外部摄像头,始终在同一地方)到物体的距离,并在该站点上的其他问题的帮助下,我在Huawei P9上实现了此功能在传感器无法呼叫onSensorChanged(SensorEvent event)的其他设备上尝试一下。

我需要调用此函数,因为我需要事件中的XYZ。

这就是我声明和注册传感器的方式。

Sensor accelerometer;
accelerometer = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    sm.registerListener(new SensorEventListener()
    {
        @Override
        public void onSensorChanged(SensorEvent event)
        {
            setXYZ(event.values[0], event.values[1], event.values[2]);

            int rotation = (int) Math.round(Math.toDegrees(Math.atan2(x, y)));

            if(checkDistance)
            {
                distance = getDistance();
                distanceOutput.setText(distance + "m");
                distanceAngleOutput.setText("Angle: " + distanceAngle);
            }
            if(checkHeight)
            {
                height = getHeight();
                heightOutput.setText(height + "m");
                heightAngleOutput.setText("Angle: " + heightAngle);

            }
        }

        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy)
        {
          // nothing here
        }
    }, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);

您需要任何更改或信息以了解我的问题,我会尽力向您提供。

1 个答案:

答案 0 :(得分:0)

您必须在 OnResume 方法中为 'OnSensorChanged' 注册一个侦听器,而不注册一个不会被调用的侦听器。

这是一个如何注册监听器的例子

_sensorManager.RegisterListener(this, _accelerometer, SensorDelay.Normal);

它需要上下文、sansor 类型、传感器延迟