002.Android硬件开发与应用

传感器分类以及在Sensor中的标识:

1.动作传感器

加速(accelerometer)传感器:TYPE_...

重力(gravity)传感器

陀螺仪(gyroscope)传感器

旋转向量(rotational vector)传感器

2.环境传感器(在Android中并不常见)

光度(barometer)传感器:TYPE_LIGHT

湿度(photometer)传感器

温度(thermometer)传感器

3.位置传感器

方向(orientation)传感器

磁力(magnetometer)传感器

-在Android SDK中 可以利用ASK(Android sensor framework)来进行操作

----------------------------------------------------------------------------------------------------------------

SensorManager: 用于创建Sensor server 实例 ,通过枚举传感器进行访问,  包含注册、注销传感器方法,还提供设置传感器精度、频率、校正等有关常量

Sensor :  提供传感器提供的数据,以及一些设备信息(版本类型等)

SensorEvent: 提供传感器提供的事件以及数据

SensorEventListener:该接口包含两个接口方法:当精度和值发生变化是调用这两个方法

----------------------------------------------------------------------------------------------------------------------

应用:

一、获取所有的传感器信息

		SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
		List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
		StringBuffer buffer = new StringBuffer();
		for (Sensor sensor : sensors) {
			buffer.append(sensor.getName() + "\n");
		}

二、获取数据

package comzlw.sensor;

import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;

public class MotionActivity extends Activity implements SensorEventListener {

	private TextView textView;
	private SensorManager sensorManager;
	private TextView textView2;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initView();

	}

	private void initView() {
		textView = (TextView) findViewById(R.id.text);
		textView2 = (TextView) findViewById(R.id.text2);
		sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
	}

	@Override
	protected void onPause() {
		// 注销监听器
		sensorManager.unregisterListener(this);

		super.onPause();
	}

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

		// 注册监听器
		sensorManager.registerListener(this,
				sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
				SensorManager.SENSOR_DELAY_UI);

		sensorManager.registerListener(this,
				sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY),
				SensorManager.SENSOR_DELAY_GAME);
	}

	// 传感器精度变化时调用
	@Override
	public void onAccuracyChanged(Sensor sensor, int accuracy) {
		// TODO Auto-generated method stub

	}

	@Override
	public void onSensorChanged(SensorEvent event) {
		String str = null;
		String str1 = null;
		switch (event.sensor.getType()) {
		case Sensor.TYPE_ACCELEROMETER:

			float x = event.values[0];
			float y = event.values[1];
			float z = event.values[2];
			str = ("加速度:\n" + "X:" + x + ";  Y:" + y + ";  Z:" + z);

			textView.setText(str);
			break;
		case Sensor.TYPE_GRAVITY:
			float x1 = event.values[0];
			float y1 = event.values[1];
			float z1 = event.values[2];
			str1 = "重力传感器:\n" + "X:" + x1 + ";  Y:" + y1 + ";  Z:" + z1;
			textView2.setText(str1);
			break;

		}

	}
}










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值