博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安卓开发中的重力感应传感器
阅读量:7138 次
发布时间:2019-06-28

本文共 1302 字,大约阅读时间需要 4 分钟。

hot3.png

     安卓开发中拥有多种传感器,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);

转载于:https://my.oschina.net/u/2408219/blog/512506

你可能感兴趣的文章
POJ Octal Fractions(JAVA水过)
查看>>
poj 2479 - Maximum sum
查看>>
用Python进行SQLite数据库操作
查看>>
父类中可继承方法在处理private的一个demo
查看>>
提高自身代码阅读能力——代码配色(Dreamweaver、Notepad++)
查看>>
SqlHelper——仅仅由于在人群中多看了你一眼
查看>>
SVN 权限配置具体说明
查看>>
全排列问题(内测第0届第1题)
查看>>
使用GROUP BY统计记录条数 COUNT(*) DISTINCT
查看>>
python中的迭代器
查看>>
IIS如何设置可以让.aspx后缀的文件直接下载
查看>>
dhcpcd 移植
查看>>
hdu 4676 Sum Of Gcd 莫队+phi反演
查看>>
Java关系操作符简写
查看>>
原博客地址http://blog.chinaunix.net/uid/20656672.html不再维护(10年前数百篇oracle/teradata性能优化、故障处理案例)...
查看>>
Java动态编程---动态代理
查看>>
GBDT(MART) 迭代决策树入门教程 | 简介
查看>>
第二十节,基本数据类型,集合set、综合应用新数据更新老数据
查看>>
架构设计:前后端分离之Web前端架构设计
查看>>
C#动态调用WCF接口(2)
查看>>