类似微信

来源:互联网 发布:天行健网络倒闭 编辑:程序博客网 时间:2024/05/02 01:52
package bw.com.bw_day09_sensor.demo03;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.os.Vibrator;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.LinearLayout;import bw.com.bw_day09_sensor.R;public class SensorActivity03 extends AppCompatActivity implements SensorEventListener{    private int[] images = {R.mipmap.image1,R.mipmap.image2,R.mipmap.image3};    private int index;    private SensorManager sensorManager;//传感器的管理器对象    private Sensor sensor;//传感器    private LinearLayout mLayout;    //添加震动  -- 震动的管理器对象    private Vibrator vibrator;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_sensor03);        mLayout = (LinearLayout) findViewById(R.id.layout_id);        //声明震动管理器对象        vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);        //1, 获取传感器的管理器对象        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);        //2, 得到传感器对象        sensor = sensorManager.getDefaultSensor(1);    }    //3, 注册监听    @Override    protected void onStart() {        super.onStart();        sensorManager.registerListener(this,sensor,200);    }    //4, 取消注册    @Override    protected void onStop() {        super.onStop();        sensorManager.unregisterListener(this);    }    //5, 得到数值的变化    @Override    public void onSensorChanged(SensorEvent event) {        //TODO  数据发生变化的回调方法        //获得数据        float[] data = event.values;        float x = data[0];        float y = data[1];        float z = data[2];        if (Math.abs(x)>15 || Math.abs(y)>15 || Math.abs(z)>15){            //添加切换图片的震动            //毫秒:  300  摇晃多长时间开始震动  , 500 震动的持续时间            long[] pattern = {300,500};            //重复次数 , -1 不重复            vibrator.vibrate(pattern,-1);            //不停的改变layout 的背景            if (index>2)            {                index = 0;            }            mLayout.setBackgroundResource(images[index]);            index++;        }    }    @Override    public void onAccuracyChanged(Sensor sensor, int accuracy) {        //TODO 精度发生变化的回调方法    }}
所需权限
<uses-permission android:name="android.permission.VIBRATE" />

原创粉丝点击