摇一摇(根据传感器和加速器实现)
mainactivity
package com.example.myyaoyiyao
import android.content.Context
import android.content.Intent
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
import android.os.Handler
import android.os.Message
import android.os.Vibrator
import android.util.Log
import android.widget.Toast
class MainActivity : AppCompatActivity() {
var mysensorManger:SensorManager?=null
var vibrator:Vibrator?=null
var listener:SensorEventListener?=null
var hander:Handler= object: Handler(){
override fun handleMessage(msg: Message) {
super.handleMessage(msg)
when (msg.what) {
10 -> {
Toast.makeText(this@MainActivity, "检测到摇晃,执行操作!", Toast.LENGTH_SHORT).show()
Log.i("---", "检测到摇晃,执行操作!")
val intent = Intent(this@MainActivity, Main2Activity::class.java)
startActivity(intent)
}
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mysensorManger= getSystemService(Context.SENSOR_SERVICE) as SensorManager?
vibrator= getSystemService(Context.VIBRATOR_SERVICE) as Vibrator?
listener = object : SensorEventListener {
override fun onAccuracyChanged(p0: Sensor?, p1: Int) {
}
override fun onSensorChanged(p0: SensorEvent?) {
val values = p0!!.values
val x = values[0]
val y = values[1]
val z = values[2]
Log.i("111", "x轴方向的重力加速度$x;y轴方向的重力加速度$y;z轴方向的重力加速度$z")
val medumValue = 19
if (Math.abs(x) > medumValue || Math.abs(y) > medumValue || Math.abs(z) > medumValue) {
vibrator!!.vibrate(200)
val msg = Message()
msg.what = 10
hander.sendMessage(msg)
}
}
}
}
override fun onResume() {
super.onResume()
if (mysensorManger!=null){
mysensorManger!!.registerListener(listener, mysensorManger!!.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
,SensorManager.SENSOR_DELAY_NORMAL)
}
}
override fun onPause() {
super.onPause()
if (mysensorManger!=null){
mysensorManger!!.unregisterListener(listener)
}
}
}