带有2个位置的Android点方向

Posted

技术标签:

【中文标题】带有2个位置的Android点方向【英文标题】:Android point direction with 2 locations 【发布时间】:2016-03-17 10:14:45 【问题描述】:

我实际上是在 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】:

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

【讨论】:

以上是关于带有2个位置的Android点方向的主要内容,如果未能解决你的问题,请参考以下文章

带有 Google api 的 Android 室内方向

Android 布局之TableLayout

HZOJ Drink

android 屏幕适配攻略 weight 注意点

Android - 沿街 2 个位置之间的距离和时间

Android:使用 parsequery 适配器在 listview 中更改 imageview 的图像