ジャイロセンサーを使ってみる 2020/11/11
ジャイロセンサーの使い方は3次元のデータを扱う加速度センサーと同じです。それなのであまり記事にすることがないです。

MainActivity.java

package net.sadaji.gyroscope;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Handler;

import java.util.List;


public class MainActivity extends AppCompatActivity {
    private SensorManager manager;
    private SensorEventListener listener;
    private List list;
    private Sensor pressure;
    private double hectoPascal;
    DataView m_dataView;
    public Gyroscope m_Gyroscope;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);
        m_dataView = new DataView(this);
        setContentView(m_dataView);

        m_Gyroscope = new Gyroscope();
        manager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        list = manager.getSensorList(Sensor.TYPE_GYROSCOPE);
        listener = new SensorEventListener() {
            public void onSensorChanged(SensorEvent event) {
                if(event.sensor.getType() == Sensor.TYPE_GYROSCOPE) {
                    m_Gyroscope.x = (double) event.values[0];
                    m_Gyroscope.y = (double) event.values[1];
                    m_Gyroscope.z = (double) event.values[2];
                    m_dataView.invalidate();
                }
            }

            public void onAccuracyChanged(Sensor sensor, int accuracy) {}
        };
    }

    @Override
    protected void onResume() {
        // Register a listener for the sensor.
        super.onResume();

        if (list.size() > 0) {
            manager.registerListener(listener, (Sensor)list.get(0),
                    SensorManager.SENSOR_DELAY_NORMAL);
        }
    }

    @Override
    protected void onPause() {
        // Be sure to unregister the sensor when the activity pauses.
        super.onPause();
        manager.unregisterListener(listener,(Sensor) list.get(0));
    }

    public class Gyroscope{
        public  double x;
        public  double y;
        public  double z;
    }

}
作ってみても精度などの検証ができません。どうやったらいいんだろう?
ソースコード:Gyroscope.zip