Android编程中光线传感器的调用方法详解
本文实例讲述了Android编程中光线传感器的调用方法。分享给大家供大家参考,具体如下:
1.activity如果要使用传感器,就必须实现SensorEventListener接口
2.得到传感器管理对象(sensormanager)
3.使用sensormanager.registerlistener
方法注册指定的传感器
4.在sensoreventlistener 接口中的onsensorchanged和onaccuracychanged方法中完成其他具体工作
public class TestActivity extends Activity {
private SensorManager sensorManager;
//第三步:对传感器信号进行监听
private SensorEventListener listener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
//提示当前光照强度
Toast.makeText(TestActivity.this,
"当前光照强度:" + event.values[0] + "勒克斯", Toast.LENGTH_SHORT).show();
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//第一步:获取 SensorManager 的实例
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
//第二步:获取 Sensor 传感器类型
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
//第四步:注册 SensorEventListener
sensorManager.registerListener(listener,sensor,SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onDestroy() {
super.onDestroy();
//传感器使用完毕,释放资源
if(sensorManager!=null){
sensorManager.unregisterListener(listener);
}
}
}
传感器类型
加速传感器(Sensor.TYPE_ACCELEROMETER
)
磁场传感器(Sensor.TYPE_MAGNETIC_FLELD
)
光线传感器 (Sensor.TYPE_LIGHT
)
方向传感器 (TYPE_ORIENTATION
)
Values数值
Accelerometer(加速传感器) values[0] :沿x轴方向加速度 values[1]: 沿 y 轴方向的加速度 values[2] : 沿 z 轴方向的加速度,也就是重力加速度
Gravity(重力感应器) values数组中的三个元素分别代表x轴,y轴,z轴的重力大小
Light(光线传感器) values数组只有第一个元素values[0]有意义,表示光线的强度,最大值是120000.0f.
Gyroscope( 陀螺传感器) values,分别表示x,y,z轴的旋转的角速度
Orientation(方向传感器) values[0] : 该值表示方位,也就是手机绕着z轴旋转的角度. 0表示北(north),90表示动(east),180表示南(south),270表示西(west) values[1]:表示倾斜度. x 轴倾斜时,该值变化,-180<= vaules[1] <= 180 values[2]: 表示沿y轴的滚动角度,-90<=values[2] <=90
在android2.3 sdk中,并不推荐使用sensor.TYPE_ORIENTATION
,values[0]值,有时会出现异常。官方推荐使用SensorManager.getOrientaion
的方法来获得正确的方向
数值更新速度
SENSOR_DELAY_FASTEST: 以最快的速度获得传感器数据 SENSOR_DELAY_GAME: 适合与在游戏中获得传感器数据 SENSOR_DELAY_NORMAL: 以一般的速度获得传感器数据 SENSOR_DELAY_UI:适合于在ui空间中获得数据
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》、《Android资源操作技巧汇总》、《Android文件操作技巧汇总》、《Android开发入门与进阶教程》、《Android编程之activity操作技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
- 百度地图之标注聚会
- How to Add an API to your Web Service
- 「微信小程序」剖析(四):原生的实时DOM转Virtual DOM
- 让你的「微信小程序」运行在Chrome浏览器上,让我们使用WebStorm
- android上拉下拉加载更多数据
- 「微信小程序」剖析(二):框架原理 | 在桌面浏览器上运行的尝试
- Working with Windows Workflow Foundation in ASP.NET
- 微信小程序剖析【下】:运行机制
- android多屏幕分辨率适配
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](二)
- 怎么解决web service circular reference 问题
- android使用LruCache对listview加载图片时候优化处理
- 如何创建一个兼容「微信小程序」的Web框架:WIN
- RePractise前端篇: 前端演进史
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- R语言通过WinBUGS对MGARCH和MSV模型进行贝叶斯估计和比较
- Spring Boot中使用 Swagger2 自动构建API文档
- dotNET:怎样处理程序中的异常(理论篇)?
- xmake从入门到精通12:通过自定义脚本实现更灵活地配置
- ggplot2火山图展示RNAseq差异表达分析结果
- 如何根据class_code筛选转录本?
- JNI线程相关
- JNI函数加载
- CSS中的传统布局、多列布局、弹性伸缩布局及Emmet工具
- 数据分析可视化(四)|Pyecharts制作地图的几种方法评析
- tensorflow运行提示未编译使用SSE4.1,SSE4.2等问题的解决方法
- [手把手系列之二]实现多层神经网络
- 使用SystemVerilog简化FPGA中的接口
- 想用深度学习谱写自己的音乐吗?这篇指南来帮你!(附代码)
- 你不是说你会aop吗?