Android传感器
来源:互联网 发布:安装ubuntu到u盘 编辑:程序博客网 时间:2024/04/27 21:12
安卓手机有好多传感器(加速度传感器,光照传感器,温度传感器,磁场传感器,姿态传感器,距离传感器,陀螺仪传感器),不过获取它们和数据的方法大致相同,只是在参数的形式上有些差异。
注意:当使用完传感器后要及时将它关闭,以免耗费电量。
1、首先介绍一下一个比较重要的类SensorManager。我们通过SensorManager 来获取手机中的传感器。
SensorManager 对象需要调用getSystemService(SENSOR_SERVICE)来获得。关于getSystemService()可以获得的系统服务及服务对应的参数常量可以参见API文档。使用getDefaultSensor()获得相应的传感器。
以下以获得加速度传感器为例:
public class SensorActivity extends Activity, implements SensorEventListener { private final SensorManager mSensorManager; private final Sensor mAccelerometer; public SensorActivity() { mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); } protected void onResume() { super.onResume(); mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); } protected void onPause() { super.onPause(); mSensorManager.unregisterListener(this); } public void onAccuracyChanged(Sensor sensor, int accuracy) { } public void onSensorChanged(SensorEvent event) { } }正如代码中所见,在getDefaultSensor()获得传感器后,还需要在onResume()中注册传感器监听器(使用registerListener()),在onPause()中注销传感器监听器(使用unregisterListener())。(这和注册与注销BroadcastReceiver一样)
除此之外,SensorActivity类还实现了SensorEventListener接口,并且实现了该接口的两个方法onAccuracyChanged(),onSensorChanged()这两个回调函数功能从名字上看就很明确了,就不做解释了。 通过event.values获得参数。
再上一段代码,与上面的做比较:
public class SensorActivity extends Activity {private final SensorManager mSensorManager;private final Sensor mAccelerometer;public SensorActivity() {mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);}protected void onResume() {super.onResume();mSensorManager.registerListener(mySensorListener, mAccelerometer,SensorManager.SENSOR_DELAY_NORMAL);}protected void onPause() {super.onPause();mSensorManager.unregisterListener(mySensorListener);}private SensorEventListener mySensorListener = new SensorEventListener() {public void onAccuracyChanged(Sensor sensor, int accuracy) {}public void onSensorChanged(SensorEvent event) {}};}
这个类并没有实现SensorEventListener接口,而是包含一个SensorEventListener对象。然后再解释以下传感器注册时的三个参数:1、监听器对象2、传感器对象3、采样率。
实现监听器有好多种写法,但在这里我觉得还是第二种比较清晰,职责比较明确。大家可以参考这篇文章。OnClickListener()用法
- Android-传感器-光照传感器
- Android 传感器
- Android 传感器
- Android传感器
- android 传感器
- android 传感器
- android传感器
- android传感器
- android 传感器
- android 传感器
- android 传感器
- android传感器
- Android传感器
- android 传感器
- Android 传感器
- Android传感器
- android传感器
- Android-传感器
- Integer
- 插入排序
- C++编程——微生物增殖
- Hashmap与Trove4j
- 好代码集锦(随时补充)
- Android传感器
- [Unity3D]AssetBundles的使用
- 用Django Rest Framework和AngularJS开始你的项目
- 猜数游戏代码--图形界面
- 黑马程序员:DOM+JS
- Documentation_timers_timers-howto
- 【Java TCP/IP Socket】TCP Socket(含代码)
- 第一次独立开发App
- Java设计模式—单态模式(Singleton)