Android点方向有2个位置

时间:2016-03-17 10:14:45

标签: android android-studio android-sensors compass magnetometer

我实际上是在Android上编写应用程序,我需要指出一个方向,解释,我有一个固定的位置和我的智能手机的位置(两个在经度纬度),我想指出一个箭头到了两者之间的方向。所以我像地狱一样搜索,我有一个完美的指南针,我试图通过更改北方向改变指向方向得到getRotationMatrix的东西但是在失去我的大脑之后尝试我不知道该怎么做xD所以是的我需要一些想法和提示。

这是我的代码以防万一(我刚刚通过onSensorChanged函数,其余的只是基本的初始化)

@Override
public void onSensorChanged(SensorEvent event) {

    if (event.sensor == mAccelerometer) {
        System.arraycopy(event.values, 0, mLastAccelerometer, 0, event.values.length);
        mLastAccelerometerSet = true;
    } else if (event.sensor == mMagnetometer) {
        System.arraycopy(event.values, 0, mLastMagnetometer, 0, event.values.length);
        mLastMagnetometerSet = true;
    }
    if (mLastAccelerometerSet && mLastMagnetometerSet) {
        SensorManager.getRotationMatrix(mR, null, mLastAccelerometer, mLastMagnetometer);
        SensorManager.getOrientation(mR, mOrientation);
        float azimuthInRadians = mOrientation[0];
        float azimuthInDegress = (float)(Math.toDegrees(azimuthInRadians)+360)%360;
        RotateAnimation ra = new RotateAnimation(
                mCurrentDegree,
                -azimuthInDegress,
                Animation.RELATIVE_TO_SELF, 0.5f,
                Animation.RELATIVE_TO_SELF,
                0.5f);

        ra.setDuration(250);

        ra.setFillAfter(true);

        mPointer.startAnimation(ra);
        mCurrentDegree = -azimuthInDegress;
    }
}

1 个答案:

答案 0 :(得分:0)

好的我管理了一些东西。我占据了我的位置,固定位置和第三个位置,具有完全相同的经度和纬度90.我有两个向量,一个指向北,一个在直线上,我们的位置和固定位置。我计算这些矢量之间的角度,并将此角度添加到旋转动画中。我不认为我的解决方案是那么好,但因为我在论坛上没有找到任何其他内容我发布了一个答案^^。