`
mr.zxing
  • 浏览: 68339 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Android 摇一摇功能实现(类似微信)

 
阅读更多

 

//需要实现SensorEventListener接口
public class LoversChoise extends Activity implements SensorEventListener{

        Button clear;

        //定义sensor管理器
    private SensorManager mSensorManager;
    //震动
    private Vibrator vibrator;

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

              //获取传感器管理服务
                mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
                //震动
                vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);

               clear = (Button) findViewById(R.id.clear);

               clear.setOnClickListener(new Button.OnClickListener(){
               @Override
                public void onClick(View arg0) {
                 // TODO Auto-generated method stub

                //点击button后,给button按钮设置了text
              clear.setText("现在给button的text赋值喽~");

        });

@Override
protected void onResume(){
  super.onResume();

  //加速度传感器
  mSensorManager.registerListener(this,
  mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
  //还有SENSOR_DELAY_UI、SENSOR_DELAY_FASTEST、SENSOR_DELAY_GAME等,
  //根据不同应用,需要的反应速率不同,具体根据实际情况设定
  SensorManager.SENSOR_DELAY_NORMAL);
}

@Override
protected void onStop(){
  mSensorManager.unregisterListener(this);
  super.onStop();
}

@Override
protected void onPause(){
  mSensorManager.unregisterListener(this);
  super.onPause();
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
  // TODO Auto-generated method stub
  //当传感器精度改变时回调该方法,Do nothing.
}
@Override
public void onSensorChanged(SensorEvent event) {
  // TODO Auto-generated method stub
  int sensorType = event.sensor.getType();

  //values[0]:X轴,values[1]:Y轴,values[2]:Z轴
  float[] values = event.values;

  if(sensorType == Sensor.TYPE_ACCELEROMETER){

  /*因为一般正常情况下,任意轴数值最大就在9.8~10之间,只有在你突然摇动手机
  *的时候,瞬时加速度才会突然增大或减少。
  *所以,经过实际测试,只需监听任一轴的加速度大于14的时候,改变你需要的设置
  *就OK了~~~
  */
   if((Math.abs(values[0])>14¦¦Math.abs(values[1])>14¦¦Math.abs(values[2])>14)){

    //摇动手机后,设置button上显示的字为空
    clear.setText(null);

    //摇动手机后,再伴随震动提示~~
    vibrator.vibrate(500);

   }
  }
}

}

  这段代码主要就是实现摇一摇清空button上的字。

 

分享到:
评论
2 楼 anyang763 2014-02-19  
楼主忘了说震动vibrator这东西是要加权限的
1 楼 lauphai 2012-10-29  
一点反应都没有。。。

相关推荐

Global site tag (gtag.js) - Google Analytics