android Sensor(二)介绍

来源:互联网 发布:淘宝网夹子 编辑:程序博客网 时间:2024/05/01 13:54

public class SensorDemoAct extends Activity implements SensorEventListener {
 TextView tv = null;
 ImageView iv_shake = null;
 SensorManager sensorManager = null;
 Vibrator vibrator = null;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  iv_shake = (ImageView) findViewById(R.id.iv_shake);
  tv = (TextView) findViewById(R.id.showsensor);
  tv.setText("摇一摇,摇出商户来~");
  iv_shake.setOnClickListener(new View.OnClickListener() {

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    tv.setText("摇一摇,摇出商户来~"); 
   }
  });

  sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
  vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);
 }

 @Override
 protected void onPause() {

  // TODO Auto-generated method stub
  super.onPause();
  sensorManager.unregisterListener(this);
 }

 @Override
 protected void onResume() {
  // TODO Auto-generated method stub
  super.onResume();
  //注册,第一个对参数为监听器对象,第二个为默认的
  sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
 }

 @Override
 public void onAccuracyChanged(Sensor sensor, int accuracy) {
  //当传感器精度改变时回调该方法,Do nothing.
 }

 @Override
 public void onSensorChanged(SensorEvent event) {
  int sensorType = event.sensor.getType();
  //values[0]:X轴,values[1]:Y轴,values[2]:Z轴
  float[] values = event.values;
  if(sensorType == Sensor.TYPE_ACCELEROMETER){ //如果类型为重力感应加速度类型  
   if((Math.abs(values[0])>17||Math.abs(values[1])>17||Math.abs(values[2])>17)){
//    Log.d("sensor ", "============ values[0] = " + values[0]);
//    Log.d("sensor ", "============ values[1] = " + values[1]);
//    Log.d("sensor ", "============ values[2] = " + values[2]);
    List<String> shopList = new ArrayList<String>();
    for(int i =1;i<=20;i++){
     String shop = "第"+i+"个商家";
     shopList.add(shop);
    }
    Random ran=new Random();
    int k = ran.nextInt(shopList.size());//返回一个在0至shopList.size()之间的int型数值
    tv.setText("这次摇出的商户是:"+shopList.get(k));
    //摇动手机后,再伴随震动提示~~
    vibrator.vibrate(500);
   }
  }
 }
}