Android 传感器应用开发

1、获取真机的Sensor管理器

private SensorManager mSensorManager;
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);

2、为系统的传感器注册监听器

// 为系统的加速度传感器注册监听器
		mSensorManager.registerListener(this,
				mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
				SensorManager.SENSOR_DELAY_GAME);		
		// 为系统的方向传感器注册监听器
		mSensorManager.registerListener(this,
			mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
			SensorManager.SENSOR_DELAY_GAME);
		// 为系统的磁场传感器注册监听器
		mSensorManager.registerListener(this,
			mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
			SensorManager.SENSOR_DELAY_GAME);
		// 为系统的温度传感器注册监听器
		mSensorManager.registerListener(this,
			mSensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE),
			SensorManager.SENSOR_DELAY_GAME);
		// 为系统的光传感器注册监听器
		mSensorManager.registerListener(this,
			mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT),
			SensorManager.SENSOR_DELAY_GAME);
		// 为系统的压力传感器注册监听器
		mSensorManager.registerListener(this,
			mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE),
			SensorManager.SENSOR_DELAY_GAME);

3、在onSensorChanged方法中得到传感器的值

public void onSensorChanged(SensorEvent event)
	{
		float[] values = event.values;
		// // 真机上获取触发event的传感器类型
		 int sensorType = event.sensor.getType();
		// 模拟器上获取触发event的传感器类型
//		int sensorType = event.type;
		StringBuilder sb = null;
		// 判断是哪个传感器发生改变
		switch (sensorType)
		{
		
		
			// 加速度传感器
			case Sensor.TYPE_ACCELEROMETER:
				sb = new StringBuilder();
				sb.append("X方向上的加速度:");
				sb.append(values[0]);
				sb.append("\nY方向上的加速度:");
				sb.append(values[1]);
				sb.append("\nZ方向上的加速度:");
				sb.append(values[2]);
				accelerometer.setText(sb.toString());
			// 方向传感器
			case Sensor.TYPE_ORIENTATION:
				sb = new StringBuilder();
				sb.append("绕Z轴转过的角度:");
				sb.append(values[0]);
				sb.append("\n绕X轴转过的角度:");
				sb.append(values[1]);
				sb.append("\n绕Y轴转过的角度:");
				sb.append(values[2]);
				etOrientation.setText(sb.toString());
				break;
			// 磁场传感器
			case Sensor.TYPE_MAGNETIC_FIELD:
				sb = new StringBuilder();
				sb.append("X方向上的角度:");
				sb.append(values[0]);
				sb.append("\nY方向上的角度:");
				sb.append(values[1]);
				sb.append("\nZ方向上的角度:");
				sb.append(values[2]);
				etMagnetic.setText(sb.toString());
				break;
			// 温度传感器
			case Sensor.TYPE_TEMPERATURE:
				sb = new StringBuilder();
				sb.append("当前温度为:");
				sb.append(values[0]);
				etTemerature.setText(sb.toString());
				break;
			// 光传感器
			case Sensor.TYPE_LIGHT:
				sb = new StringBuilder();
				sb.append("当前光的强度为:");
				sb.append(values[0]);
				etLight.setText(sb.toString());
				break;
			// 压力传感器
			case Sensor.TYPE_PRESSURE:
				sb = new StringBuilder();
				sb.append("当前压力为:");
				sb.append(values[0]);
				etPressure.setText(sb.toString());
				break;
		}
	}

4、取消监听器

mSensorManager.unregisterListener(this);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值