为什么摇一摇的时候,如果摇的比较使劲,估计传感器变化超过两次,就会执行两次或多次动作呀~比如出现好几个代码中的activity
package com.cnlaunch.ui;
import android.app.Activity;
import android.app.Service;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Vibrator;
import android.widget.Toast;
//实现SensorEventListener接口 可以实现多个接口,但是只能继承一个类,
public class RockActivity extends Activity implements SensorEventListener {
private SensorManager mSensorManager;
private Vibrator mVibrator;
private final int ROCKPOWER = 15;// 这是传感器系数
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 获取传感器管理服务
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
// 震动服务
mVibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE); // 震动需要mainfest里面注册哦亲
}
/* (非 Javadoc)
* @see android.app.Activity#onPause()
*/
// @Override
// protected void onPause() {
// // TODO 自动生成的方法存根
// super.onPause();
// if (mSensorManager != null) {
// mSensorManager.unregisterListener(this);
// }
// }
@Override
protected void onResume() {
super.onResume();
if (mSensorManager != null) {
// 加速度传感器
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
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]) > ROCKPOWER || Math.abs(values[1]) > ROCKPOWER || Math.abs(values[2]) > ROCKPOWER)) {
mVibrator.vibrate(200);// 设置震动
Intent intent=new Intent(RockActivity.this,otherActivity.class);
this.startActivity(intent);
}
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。