android设备上实现摇一摇

第一步:

定义传感器管理服务和传感器时间监听器

	MySensorEventListener mySensorEventListener;//传感器事件监听器
	private SensorManager sensorManager;// 传感器管理服务

第二步:

获取传感器管理服务

sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);// 获取传感器管理服务
实现监听器,一个安装了SensorEventListener接口的类

	class MySensorEventListener implements SensorEventListener {

		@Override
		public void onAccuracyChanged(Sensor arg0, int arg1) {
			// TODO Auto-generated method stub
			// 当传感器精度改变时回调该方法
		}

		@Override
		public void onSensorChanged(SensorEvent event) {
			// TODO Auto-generated method stub
			int sensorType = event.sensor.getType();
			float[] values = event.values; // values[0]:X轴,values[1]:Y轴,values[2]:Z轴
			//是重力加速度事件且任意一轴上的加速度值大于设定值item
			if (sensorType == Sensor.TYPE_ACCELEROMETER) {
				if ((Math.abs(values[0]) > item || Math.abs(values[1]) > item || Math
						.abs(values[2]) > item)) {
					tv1.setText( String.format(str, values[0], values[1], values[2]));
					//vibrator.vibrate(300);// 震动
				}
			}
		}

	}
第三步:

重载Activity中的onResume()方法注册监听器

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		// 注册
		sensorManager.registerListener( mySensorEventListener,
				sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
	}

重载Activity中的onPause()方法取消注册监听器

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		//取消注册
		sensorManager.unregisterListener( mySensorEventListener );
		super.onPause();
	}
demo下载地址: http://download.csdn.net/detail/duduhali/9104591

你可能感兴趣的:(android)