0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Android】ジャイロスコープを使用する

Last updated at Posted at 2023-02-28

はじめに

Androidでジャイロスコープを使用する方法について解説。
公式のリファレンスには、以下のように記述されている。

ジャイロスコープは、端末の x、y、z 軸周りの回転速度を rad/s で測定します。

コード

  • センサーイベントリスナー(SensorEventListener)インターフェースを継承。
  • センサーマネージャー(sensorManager)を定義し、onResume時にリスナーを登録、onPause時にリスナーを解除する。
  • onSensorChangedメソッド内でジャイロ検知を行う。
MainActivity.kt
class MainActivity : AppCompatActivity(), SensorEventListener {
	/** ViewBinding */
	private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
	/** センサーマネージャー */
	private val sensorManager by lazy { getSystemService(SENSOR_SERVICE) as SensorManager }

	override fun onCreate(savedInstanceState: Bundle?) {
		super.onCreate(savedInstanceState)
		setContentView(binding.root)
	}

	override fun onResume() {
		super.onResume()

		val gyroscope = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE)
		if (gyroscope != null) sensorManager.registerListener(this, gyroscope, SensorManager.SENSOR_DELAY_NORMAL)
	}

	override fun onPause() {
		super.onPause()
		sensorManager.unregisterListener(this)
	}

	override fun onSensorChanged(event: SensorEvent) {
		if (event.sensor.type == Sensor.TYPE_GYROSCOPE) {
			val sensorX = event.values[0]
			val sensorY = event.values[1]
			val sensorZ = event.values[2]
			//TODO ここに処理を記載
		}
	}

	override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {}
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?