onSensorChanged的android设备

时间:2014-10-18 19:07:24

标签: android android-sensors

我有来自Android设备的long和lat,但我的结果还不够好。我的意思是我的结果是int数:37.0或260.0 ..我想要它的双号37.001 - 37.999

我的代码:

// record the compass picture angle turned
private float currentDegree = 0f;
// device sensor manager
private SensorManager mSensorManager;

@Override
public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub
     // get the angle around the z-axis rotated
    float degree = Math.round(event.values[0]);
    tvHeading.setText(Float.toString(degree));
    // create a rotation animation (reverse turn degree degrees)
    RotateAnimation ra = new RotateAnimation(
            currentDegree,
            -degree,
            Animation.RELATIVE_TO_SELF, 0.5f,
            Animation.RELATIVE_TO_SELF,
            0.5f);
    // how long the animation will take place
    ra.setDuration(210);
    // set the animation after the end of the reservation status
    ra.setFillAfter(true);
    // Start the animation
    currentDegree = -degree;
 //   updateWithNewLocation(l);
}
希望能有所帮助。感谢。

问题解决了:需要定义这样的程度:

float degree = event.values[0];

另一个问题是: 我的结果在0.0到360.0之间,我希望结果在0.000到 6400.999

之间

问题也解决了: 使程度在0 - 6400之间而不是:

double result =degree * 17.77777778; 
         degree = (float) result;

让我们举一个例子:3200必须是180 .. 180 * 17.77777778完全是3200。不管怎么说,还是要谢谢你。享受:)

1 个答案:

答案 0 :(得分:0)

学位应定义为

  degree = Math.round(yourValue*100.0)/100.0;

小数乘以后的2位数并除以100

在十进制乘法后的3位数轮并除以1000

。 。

等等