Android传感器的简单使用-1
来源:互联网 发布:fastjson源码下载 编辑:程序博客网 时间:2024/06/13 12:33
监视传感器事件
要监视原始的传感器数据,你需要实现两个通过SensorEventListener接口暴露的回调方法:onAccuracyChanged()和onSensorChanged()。Android系统在任何发生下列事情的时候都会调用这两个方法:
- 传感器精度的改变:
这种情况中,系统会调用onAccuracyChanged()方法,它提供了你要引用的发生精度变化的Sensor对象。精度使用以下四个状态常量之一来代表的:
SENSOR_STATUS_ACCURACY_LOWSENSOR_STATUS_ACCURACY_MEDIUMSENSOR_STATUS_ACCURACY_HIGHSENSOR_STATUS_UNRELIABLE
- 传感器报告新的值:
这种情况中,系统会调用onSensorChanged()方法,它提供了一个SensorEvent对象。SensorEvent对象包含了有关新的传感器数据的信息,包括:数据的精度、产生数据的传感器、产生数据时的时间戳、以及传感器记录的新的数据。
package com.senmar;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 MainActivity extends Activity implements SensorEventListener { private TextView tvSensors,tvSensors1,tvSensors2; private SensorManager sensorManager; private float[] gravity = new float[3];//保存重力传感器数据 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //显示数据控件 tvSensors = (TextView) findViewById(R.id.tvSensors); tvSensors1 = (TextView) findViewById(R.id.tvSensors1); tvSensors2 = (TextView) findViewById(R.id.tvSensors2); // 获取传感器服务 sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); } @Override public void onAccuracyChanged(Sensor sensor, int i) { // 当传感器的精度发生改变时调用此方法 } @Override public void onSensorChanged(SensorEvent event) { switch (event.sensor.getType()) { case Sensor.TYPE_ACCELEROMETER:// 加速度传感器 // 消杂:消除重力对回传值的影响 final float alpha = (float) 0.8; gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0]; gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1]; gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2]; String accelerometer = "加速度\n" + "X:" + (event.values[0] - gravity[0]) + "\nY:" + (event.values[1] - gravity[1]) + "\nZ:" + (event.values[2] - gravity[2]); tvSensors.setText(accelerometer); break; case Sensor.TYPE_GRAVITY:// 重力传感器 // 获取返回值 gravity[0] = event.values[0]; gravity[1] = event.values[1]; gravity[2] = event.values[2]; break; case Sensor.TYPE_PROXIMITY:// 临近传感器 // 显示在标题 tvSensors1.setText("临近\n"+String.valueOf((event.values[0]))); break; case Sensor.TYPE_LIGHT:// 临近传感器 // 显示在标题 tvSensors2.setText("光照\n"+String.valueOf(event.values[0])); break; default: break; } }//生命周期函数 @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_FASTEST); // 临近传感器 sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY), SensorManager.SENSOR_DELAY_UI); // 光照传感器 sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT), SensorManager.SENSOR_DELAY_UI); }//生命周期函数 @Override protected void onPause() { super.onPause(); // 取消传感器监听 sensorManager.unregisterListener(this); }}
0 0
- Android传感器的简单使用-1
- Android 方向传感器的简单使用
- Android 光线传感器简单使用
- Android 陀螺仪传感器简单使用
- android 传感器的使用
- android传感器的使用
- android 传感器的使用
- Android 传感器的使用
- Android 传感器的使用
- Android 传感器的使用
- Android传感器的使用
- android-传感器的简单运用
- 加速度传感器的简单使用
- Android 传感器 (详解一)—— 简单介绍传感器的使用步骤
- Android传感器的使用(方向传感器,重力传感器)
- 第十章--简单使用android传感器
- Android中传感器的使用
- android 方向传感器的使用
- 程序启动画面 QSplashScreen
- java/android中引用
- 自动重启weblogic 数据库连接池的WLST脚本
- Hadoop 移动平均在交通流量中的应用
- 欢迎使用CSDN-markdown编辑器
- Android传感器的简单使用-1
- 判断是否联网操作,并打开网络设置
- threading
- 网络流24题10. 餐巾计划问题
- Vue2.0开发购物车实例
- 【C++】iostream, fstream, stringstream知识
- Xcode中蓝色和黄色文件夹的区别
- 含有虚函数的C++类大小
- java多线程中的生产者消费者模式实现线程间的通信