2

我想根据用户旋转来获取和移动坐标上的针,或者像指南针一样移动设备,因为这个应用程序已经在做。你可以在这个链接上看到我想说的https://play.google.com/ store/apps/details?id=com.plaincode.clinometer&hl=en但现在我无法理解这种情况。我无法找到如何开始的提示..他们是否有任何 api 来获取并使其工作,或者需要在非常广泛的层面上实现加速度计才能完成它。如果您有任何关于此的代码或链接,请指导我..提前谢谢

4

2 回答 2

0

一年多前,我一直在寻找这个解决方案,为此我设法以类似的方式做到了这一点。我设法做的事情的来源是——链接到来源

于 2013-12-16T06:05:47.170 回答
0

您应该开始创建一个实现 SensorEventListener 的活动,包括以下两个方法:

public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
        // add your code
        // event.values[] contains the 3 accelerometer values
    }
}

@Override
public void onAccuracyChanged(Sensor sensor, int i) {
    // add your code
}

作为第二步,从在 Activity 中实现加速度计开始:

private SensorManager mSensorManager;
private Sensor mRotationSensor;
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

然后在上面注册一个传感器监听器(你可以在 onResume 中做):

mSensorManager.registerListener(this, mRotationSensor, 16000);
// 16000 microseconds

并取消注册(在 onPause 中):

mSensorManager.unregisterListener(this);

请注意,如果您想要非常准确地测量 3 维的角度和斜率,您应该执行板载加速度计的校准程序,通常需要对增益偏移角度进行少量补偿。

您可以在免费和开源的 BasicAirData Clinometer 上阅读 Accelerometers 的简单但完整的用法:https ://github.com/BasicAirData/Clinometer

该应用程序还包括一个校准程序。

于 2021-08-31T12:05:08.813 回答