这是我的第一个问题,因此,我将接受所有批评者的意见,以改善我的问题。
我正在开发一个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);
您需要任何更改或信息以了解我的问题,我会尽力向您提供。
答案 0 :(得分:0)
您必须在 OnResume 方法中为 'OnSensorChanged' 注册一个侦听器,而不注册一个不会被调用的侦听器。
这是一个如何注册监听器的例子
_sensorManager.RegisterListener(this, _accelerometer, SensorDelay.Normal);
它需要上下文、sansor 类型、传感器延迟