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