ジャイロセンサーの使い方は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
|