Android传感器学习五---实例
来源:互联网 发布:巴黎综合理工学院知乎 编辑:程序博客网 时间:2024/05/20 02:28
传感器的框架
在package android.hardware。
执行过程
主要通过以下步骤:
1、获得传感器管理对象
2、通过传感器管理对象的getDefaultSensor()获得传感器对象
3、注册传感器对象
4、传感器事件监听
动作过程如下图:
实例一:实现加速度数据的收集显示
package com.example.gravity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.app.Activity;
import android.widget.TextView;
public class MainActivity extends Activity implements SensorEventListener {
private SensorManager sensorManager;// 定义传感器管理对象
private Sensor sensor;// 定义传感器对象
private TextView tv1;
private TextView tv2;
private TextView tv3;
private float gravity[] = new float[3];
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv1 = (TextView) findViewById(R.id.textView1);
tv2 = (TextView) findViewById(R.id.textView2);
tv3 = (TextView) findViewById(R.id.textView3);
// 1、得到sensorManager对象
/*
* 得到sensorManager传感器管理对象。getSystemService是Android很重要的一个API,它是Activity的一个方法
* ,根据传入的Name来取得对应的object,然后转换成相应的服务对象。
*/
sensorManager = (SensorManager) this.getSystemService(SENSOR_SERVICE);
// 2、得到sensor(此方式已经过时了,但是为了支持低版本的还是需要选择这个)
// sensor = sensorManager
// .getDefaultSensor(SensorManager.SENSOR_ACCELEROMETER);
// 将SensorManager.SENSOR_ACCELEROMETER替换为Sensor.TYPE_ACCELEROMETER,后者为新版本的
/* 通过传感器管理对象的getDefaultSensor()获得传感器对象得到sensor */
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
// 3、得到感应事件监听,通过注册实现
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
/* 注销传感器对象 */
sensorManager.unregisterListener(this);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
/* 第一个参数为Listener实例,第二个参数为想接收的传感器,第三个参数为接收频度 */
sensorManager.registerListener(this, sensor,
SensorManager.SENSOR_DELAY_NORMAL);
}
/*
* onAccuracyChanged(Sensor sensor,int
* accuracy):传感器的精准度发生变化时调用。accuracy表示新精度值。
*/
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
/*
* * SensorEventListener 是使用传感器的核心部分.onSensorChanged(SensorEvent
* event):在传感器值更改时调用。SensorEvent对象包括传感器获得的方向、加速度等信息。如下传感器一旦发现加速度值变化,便收集数据。
*/
@Override
public void onSensorChanged(SensorEvent event) {
// 但是这里获取的加速度会受到重力的影响,使用高通滤波的方式进行过滤,下面没有使用,但是在前面那篇翻译Motion Sensor提到过
gravity[0] = event.values[0];
gravity[1] = event.values[1];
gravity[2] = event.values[2];
tv1.setText("x = " + gravity[0]);
tv2.setText("y = " + gravity[1]);
tv3.setText("z = " + gravity[2]);
}
}
======================================================================================================
- Android传感器学习五---实例
- android 传感器 简单实例
- Android传感器使用实例
- Android传感器(五):线性加速度传感器
- Android传感器概述(五)
- Android传感器概述(五)
- Android传感器概述(五)
- Android传感器使用实例1
- android 摇一摇 传感器实例详解
- 0922Android传感器实例指南针
- Android传感器编程带实例
- Android传感器编程实例源码
- Android传感器编程带实例
- android传感器的学习
- Android传感器学习一
- Android陀螺仪传感器学习
- Android传感器学习总结
- android传感器架构学习
- 1011. World Cup Betting (20)
- oracle sql 优化分析点
- Android中Menu的使用
- 怎样实现tomcat做服务器在windows下开机自动运行
- Linux 内核版本命名
- Android传感器学习五---实例
- VC++ 获取跳转后的url函数实现及相关资料
- G711编解码
- android开发环境搭建
- Java自学视频整理(持续更新中...)
- VC++ 解压有密码的.zip文件
- 图片的任意拖动JLabel实现
- (转)VC++多线程编程
- Linux编程基础——GDB(设置断点)