Android传感器及使用方法
来源:互联网 发布:度娘软件下载 编辑:程序博客网 时间:2024/05/29 21:34
Android 中传感器以三个浮点数为一组数据来描述设备所处的状态或周围的环境
当传感器测得状态发生变化时,调用SensorEventListener接口的OnSensorChanged(SensorEvent event)方法执行相关操作
这个方法的参数中的event传递了传感器的状态
在方法中可以用event.values[0]、event.values[1]和event.values[2]访问传感器测到的数据
在Android应用中使用传感器
1) 从系统服务中获取SensorManager
SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
2) 从SensorManager获取相应的传感器(Sensor)
Sensor sensor = sensorManager.getDefaultSensor(传感器类型常量);
常用的传感器有:加速传感器、重力传感器、陀螺仪、方向传感器、光线传感器等
在Sensor类中对各种类型传感器有对应的常量
3) 注册传感器事件监听器(SensorEventListener)
sensorManager.registerListener(SensorEventListener listener, Sensor sensor, int samplingPeriodUs);
SensorEventListener是一个接口,实现SensorEventListener接口,需要覆盖两个方法:
void onSensorChanged(SensorEvent event)
void onAccuracyChanged(Sensor sensor, int accuracy)
Sensor是2中获取到的传感器
第三个参数是采样周期,同样SensorManager类对不同的级别有对应的常量,周期由小到大(即采样由快到慢)分别为:
4) 注销传感器事件监听器
sensorManager.unregisterListener(SensorEventListener listener);
代码示例:
将传感器数据在Activity中显示
1) 布局文件 activity_test.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/btn1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="register" /> <Button android:id="@+id/btn2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="unregister" /> <TextView android:id="@+id/tv1" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
2) Test.java
public class Test extends Activity implements View.OnClickListener, SensorEventListener { private TextView tv1; private SensorManager sensorManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test); //获取传感器服务 sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); tv1 = (TextView) findViewById(R.id.tv1); findViewById(R.id.btn1).setOnClickListener(this); findViewById(R.id.btn2).setOnClickListener(this); } @Override protected void onPause() { super.onPause(); //离开Activity时注销监听器以节省资源 sensorManager.unregisterListener(this); } @Override public void onClick(View v) { int id = v.getId(); //获取传感器 Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); //注册监听器 sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL); } else if (id == R.id.btn2) { //注销监听器 sensorManager.unregisterListener(this); } } @Override public void onSensorChanged(SensorEvent event) { //获取传感器数据 float value0 = event.values[0]; float value1 = event.values[1]; float value2 = event.values[2]; //将数据显示到TextView中 tv1.setText(String.format("x:%f y:%f z:%f", value0, value1, value2)); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) {}}
0 0
- Android传感器及使用方法
- 称重传感器的参数及使用方法
- 动作传感器的组成及使用方法
- 位置传感器的组成及使用方法
- 环境传感器的组成及使用方法
- Android传感器及简单应用
- android学习笔记---57_采用方向传感器实现指南针,android设备传感器介绍,以及使用方法
- android 获取手机中所有的传感器Sensor类使用方法
- android中11种常见传感器的使用方法
- android中11种常见传感器的使用方法
- android中11种常见传感器的使用方法
- Android传感器介绍及指南针的实现
- Android传感器介绍及指南针的实现
- android中的硬件及相关传感器
- Android手机传感器及实时数据显示
- 传感器的使用方法
- Android-传感器-光照传感器
- Android 传感器
- ios 分辨率 和物理大小
- Linux虚拟文件系统(内核初始化<二>)
- 记一个State Loss断言
- Linux虚拟文件系统(安装根文件系统)
- 曝各城市娶妻成本:深圳208万 程序员成为“妻奴”?
- Android传感器及使用方法
- Unity3D 播放MP4 的几种状态
- 【题解】最大零矩阵
- 【Django】Django命令(Manager.py)
- 有用的网址
- Linux虚拟文件系统之文件系统安装(sys_mount())
- ListView性能优化
- c++ static应用在普通变量
- ORACLE 二次条带化【ASM、RAID说明】