您的位置:首页 > 移动开发 > Android开发

Android中摇一摇效果的实现

2015-06-27 16:26 706 查看
public class MainActivity extends Activity implements SensorEventListener {
private Button clean_btn;
private SensorManager mSensorManager;
private Vibrator vibrator;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//得到传感器管理器
mSensorManager=(SensorManager) getSystemService(SENSOR_SERVICE);
vibrator=(Vibrator) getSystemService(VIBRATOR_SERVICE);
clean_btn=(Button) findViewById(R.id.clean_btn);
clean_btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
clean_btn.setText("重測");
}
});
}

@Override
protected void onResume() {
super.onResume();
//获取加速传感器
mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_NORMAL);

}

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

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

@Override
public void onSensorChanged(SensorEvent event) {
int sensortype=event.sensor.getType();
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)
{
clean_btn.setText("搖一搖");
vibrator.vibrate(500);
}
}
}

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

应该还算比较简单,对了不要忘记加权限:

<uses-permission android:name="android.permission.VIBRATE"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 传感器