仿微信摇一摇最简单实现

来源:互联网 发布:数据仓库与数据库区别 编辑:程序博客网 时间:2024/05/01 14:57
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) {        }    };}