安卓开发中的重力感应传感器

     安卓开发中拥有多种传感器,google提供了11种传感器供应用层使用:加速度、磁力、方向、陀螺仪、光线、压力(返回当前压强)、温度、接近(检测物体与手机的距离)、重力、线性加速度和旋转矢量。
     在使用传感器之前,需要将工程中的类接口到SensorEventListener,接口后会有两个重载方法来进行监听,并取得感应检测Sensor状态。其中onAccuracyChanged()方法在感应检测到Sensor的精密度有变化时被调用,onSensorChanged()方法是在感应检测到Sensor的值有变化时被调用到。
     工程建立后,声明SensorManager和Sensor两个对象,通过三条语句完成对传感器管理器,传感器以及传感器的注册的操作:
        manager =(SensorManager)getSystemService(SENSOR_SERVICE);//获得传感器的服务。
        sensor = manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);//获得加速度传感器服务
        manager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_UI);//对传感器服务进行注册。
在传感器服务的注册方法中,有三个参数,三个参数分别为:监听sensor事件,Sensor目标种类,延迟时间的精度密度(包含FASTEST,GAME,UI,NORMAL四种情况,FASTEST太灵敏用不到,GAME主要用于游戏的开发,一般研发中使用UI和NORMAL)。完成了传感器服务的注册后,便可以进行感应数据的读取。
public void onSensorChanged(SensorEvent event)
 {
  mgx = event.values[SensorManager.DATA_X];
  mgy = event.values[sensorManager.DATA_Y];
  if(mgx<2&&mgx>-2&&mgxold<-2)
  {WifiSend("1");}
  else if(mgx<2&&mgx>-2&&mgxold>2)
  {WifiSend("2");}
  else if(mgy<2&&mgy>-2&&mgyold<-2)
  {WifiSend("3");}
  else if(mgy<2&&mgy>-2&&mgyold>2)
  {WifiSend("4");}
  mgxold = mgx; mgyold = mgy;
 }
此段代码的作用是通过对比前后两次加速度传感器的数据,来判别手机转动的方式,然后对移动小车进行行进控制,达到重力感应控制小车的目的。

    在使用完传感器之后,需要在工程对传感器服务进行注销,避免当Activity在后天运行时消耗手机电量。 

  SensorManager.unregisterListener(SensorEventListener, mSensor);

你可能感兴趣的:(安卓加速度传感器)