重力传感器简单用法

设当地的重力加速度为g
手机正面朝上的时候,z的值为g,反面朝上的时候,z的值为-g;
手机右侧面朝上的时候,x的值为g,左侧面朝上的时候,x的值为-g;
手机上侧面朝上的时候,y的值为g,下侧面朝上的时候,y的值为-g。
这里写图片描述

重力传感器的使用

  • 创建一个传感器管理器和一个传感器监听器。管理器用来管理传感器以及创建各种各样的传感器,监听器用来监视传感器的变化并且进行相应的操作

1.在创建的xxxActively.java下首先声明以下内容

SensorManager sensormanager = null;
Sensor sensor = null;
SensorEventListener sel;
private float x_G;
private float y_G;
private float z_G;

2.接着在onCreate方法中添加以下代码

//手机中的所有传感器都需要通过SensorManger来访问,调用getSystemService(SENSOR_SERVICE)方法可以拿到当前手机的传感器管理对象
         sensormanager = (SensorManager)getSystemService(SENSOR_SERVICE);

         //实现SensorEventListener接口
         sel = new SensorEventListener(){

			@Override
			public void onAccuracyChanged(Sensor sensor, int accuracy) {}
			@Override
			public void onSensorChanged(SensorEvent event) {
				//重力感应主要是靠手机的加速度传感器(accelerometer)来实现
				if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){//这里我们得到的是x,y,z方向上的重力加速度的值,也可以将其在屏幕上显示出来
					x_G = event.values[SensorManager.DATA_X];
					y_G = event.values[SensorManager.DATA_Y];
					z_G = event.values[SensorManager.DATA_Z];
					//textview.setText(x_G +"  "+y_G+"  "+z_G);
					
				}
			}
         };
         

3.重写Activity的onResume()方法,在方法体创建重力传感器,并向系统注册监听器。
代码如下:

	public void onResume(){
		 sensor = sensormanager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);//这里所使用的传感器类型是加速度传感器
         //注册listener,第三个参数是检测的精确度
         sensormanager.registerListener(sel, sensor,sensormanager.SENSOR_DELAY_GAME);
         super.onResume();
	}

4.最后重写Activity的onPause()方法,在其中注销所有传感器的监听,释放重力传感器的资源,注意传感器十分耗电,不用时一定要释放。代码如下:

public void onPause(){
		//注销所有传感器的监听
		sensormanager.unregisterListener(sel);
		super.onPause();
	}

猜你喜欢

转载自blog.csdn.net/weixin_42882887/article/details/81741363
今日推荐