6

これが以前に尋ねられたことは知っていますが、探している答えが見つかりませんでした。

私がしたいのは、携帯電話を空にかざして、地平線に対してどの角度で携帯電話を持っているかを知ることだけです。したがって、真上に持っている場合 (画面が地面に面している) は 90 度を示し、前に持っている場合 (画面が自分に向いている) は 0 度を示しているはずです。

加速度計からデータを取得するためのいくつかの基本をいじりましたが、そこから X、Y、Y の値を取得したと思います。どうすればそれらの点を取り、自分の角度を見つけることができますか? 以下は、座標を収集する OnSensorChanged イベントです。

    public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
   mGravity = event.values;
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
   mGeomagnetic = event.values;
if (mGravity != null && mGeomagnetic != null) {
   float R[] = new float[9];
   float I[] = new float[9];

  boolean success = SensorManager.getRotationMatrix(R, I, mGravity, mGeomagnetic);
   if (success) {
       float orientation[] = new float[3];
       SensorManager.getOrientation(R, orientation);
       playerAngle = (float) Math.toDegrees(Math.atan2(orientation[1], orientation[0]));

    }
4

0 に答える 0