package com.example.a22fangweixinyaoyiyao.wk6.wk622fangweixinyaoyiyao; import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.Toast; public class MainActivity extends AppCompatActivity { // TODO: 2017-06-22 安卓仿微信摇一摇功能 //主要是利用到手机在x,y,z三个方向加速度,设定一个预定值进行衡量的额标准, // 但是至少我们要设定在重力加速度之上, // 不然会导致于正常情况下也会超标,这块我设置的是13,注意手机肯定需要带重力感应CIA可以的 SensorManager sensorManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL); } @Override protected void onDestroy() { super.onDestroy(); if (sensorManager != null) { sensorManager.unregisterListener(listener); } } SensorEventListener listener = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { //加速度可能是负值,所以要取他们的绝对值 float xvalue = Math.abs(event.values[0]); float yvalue = Math.abs(event.values[0]); float zvalue = Math.abs(event.values[0]); if (xvalue > 13 || yvalue > 13 || zvalue > 13) { //认为用户摇动了手机,开始调用摇一摇的逻辑 Toast.makeText(MainActivity.this, "开始摇一摇", Toast.LENGTH_SHORT).show(); } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } }; }
仿微信摇一摇最简单实现
最新推荐文章于 2019-12-19 16:47:06 发布