【Kotlin】加速度センサーを利用する

Kotlinで加速度センサーを利用してみた。

パーミッションは必要なく、リスナーを実装するだけでいけた。

加速度センサーの値(X、Y、Z軸)が表示されるアプリ
package com.atmc118.sensorpika

import android.content.Context
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

//Gradleのpluginsに追記する必要あり 「id 'kotlin-android-extensions'」
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity(),SensorEventListener {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    override fun onSensorChanged(event: SensorEvent?) {
        if(event == null) return
        if(event.sensor.type == Sensor.TYPE_ACCELEROMETER){
            txt01.text = "x: ${event.values[0]} \n y: ${event.values[1]} \n z: ${event.values[2]} \n"
        }
    }

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

    }

    override fun onResume() {
        super.onResume()
        val sm = getSystemService(Context.SENSOR_SERVICE) as SensorManager
        val accmeter = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
        sm.registerListener(this,accmeter,SensorManager.SENSOR_DELAY_NORMAL)
    }

    override fun onPause() {
        super.onPause()
        val sm = getSystemService(Context.SENSOR_SERVICE) as SensorManager
        sm.unregisterListener(this)
    }
}

resumeでリスナー登録、pauseでリスナー解除する。

センサーの値はonSensorChangedで取得できるのでテキスト表示する。

加速度センサーを使えば色々応用できそう。

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog