Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as Plain Text by xDD ( 2 years ago )
package com.example.magnetometerapp

import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import android.widget.TextView
import android.graphics.Color

class MainActivity : AppCompatActivity(), SensorEventListener {

    private lateinit var sensorManager: SensorManager
    private var accelerometer: Sensor? = null
    private var gyroscope: Sensor? = null
    private var magnetometer: Sensor? = null
    private lateinit var accelerationText: TextView
    private lateinit var gyroscopeText: TextView
    private lateinit var magneticFieldText: TextView
    private var accelerometerValues = FloatArray(3)
    private var gyroscopeValues = FloatArray(3)
    private var magneticFieldValues = FloatArray(3)

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        accelerationText = findViewById(R.id.accelerationText)
        gyroscopeText = findViewById(R.id.gyroscopeText)
        magneticFieldText = findViewById(R.id.magneticFieldText)

        sensorManager = getSystemService(SENSOR_SERVICE) as SensorManager

        accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
        gyroscope = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE)
        magnetometer = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD)
    }

    override fun onResume() {
        super.onResume()
        sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_UI)
        sensorManager.registerListener(this, gyroscope, SensorManager.SENSOR_DELAY_UI)
        sensorManager.registerListener(this, magnetometer, SensorManager.SENSOR_DELAY_UI)
    }

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

    override fun onSensorChanged(event: SensorEvent?) {
        if (event == null) return

        when (event.sensor.type) {
            Sensor.TYPE_ACCELEROMETER -> {
                accelerometerValues = event.values
                accelerationText.text = "Acceleration: ${accelerometerValues[0]}, ${accelerometerValues[1]}, ${accelerometerValues[2]}"
            }
            Sensor.TYPE_GYROSCOPE -> {
                gyroscopeValues = event.values
                gyroscopeText.text = "Gyroscope: ${gyroscopeValues[0]}, ${gyroscopeValues[1]}, ${gyroscopeValues[2]}"
            }
            Sensor.TYPE_MAGNETIC_FIELD -> {
                magneticFieldValues = event.values
                magneticFieldText.text = "Magnetic Field: ${magneticFieldValues[0]}, ${magneticFieldValues[1]}, ${magneticFieldValues[2]}"
            }
        }

        updateBackgroundColor()
    }

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

    private fun updateBackgroundColor() {
        val x = accelerometerValues[0]
        val y = accelerometerValues[1]
        val z = accelerometerValues[2]

        val rotation = gyroscopeValues[2]

        val magnetic = magneticFieldValues[0]

        val grayValue = (Math.abs(x) * 85 + Math.abs(y) * 85 + Math.abs(z) * 85).toInt() % 256

        val color = Color.rgb(grayValue, grayValue, grayValue)

        window.decorView.setBackgroundColor(color)
    }
}
    




<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/accelerationText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Acceleration: 0.0, 0.0, 0.0"
        android:textSize="20sp"
        android:layout_centerHorizontal="true"
        android:layout_alignParentTop="true"
        android:padding="16dp"
        />

    <TextView
        android:id="@+id/gyroscopeText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:textSize="20sp"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/accelerationText"
        android:padding="16dp"/>

    <TextView
        android:id="@+id/magneticFieldText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Magnetic Field: 0.0, 0.0, 0.0"
        android:textSize="20sp"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/gyroscopeText"
        android:padding="16dp"/>
</RelativeLayout>

 

Revise this Paste

Your Name: Code Language: