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" />