Android之光线传感器
Android手机自带光线传感器,通常我们手机的屏幕自动亮度都是用光线传感器来实现的。该传感器在前置摄像头附近,此外,还有一个距离传感器。本文主要讲解如何使用Android手机的光线传感器。
获得感应器服务
Android开发中要使用光线传感器,需要先获得系统传感器服务Context.SENSOR_SERVICE
,获得方法如下:
SensorManager senserManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
获得光线传感器
SensorManager是系统传感器服务,是系统所有传感器的管理器。通过它,我们获得制定类型的传感器,获得光线传感器的方法如下:
Sensor sensor = senserManager.getDefaultSensor(Sensor.TYPE_LIGHT);
代码中Sensor.TYPE_LIGHT是指光线传感器。
Sensor中还有许多其他的传感器,这里暂不讨论。
编写监听器
有了sensor对象之后,我们需要对该感应器进行监听,使用 SensorEventListener
接口,主要有onSensorChanged()和onAccuracyChanged()这两个方法,代码如下:
SensorEventListener listener = new SensorEventListener() {@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {//当传感器精度发生变化时}@Overridepublic void onSensorChanged(SensorEvent event) {//当传感器监测到的数值发生变化时}};
注册监听器
接下来我们还需要调用SensorManager的registerListener()
方法来注册SensorEventListener才能使其生效,registerListener()
方法包含三个参数:SensorEventListener实例,Sensor的实例和传感器输出信息更新速率。
传感器输出信息更新速率有:
- SENSOR_DELAY_UI
- SENSOR_DELAY_NORMAL
- SENSOR_DELAY_GAME
- SENSOR_DELAY_FASTEST
总共四种值可选,它们的更新速率是依次递增的。
注册SensorEventListener的代码如下:
senserManager.registerListener(listener, senser, SensorManager.SENSOR_ DELAY_NORMAL);
注销监听器
最后,当程序退出或传感器使用完毕时,一定要调用unregisterListener()
方法将使用的资源释放掉,如下所示:
sensorManager.unregisterListener(listener);
DEMO
package com.test.sensor.light; import android.app.Activity;
import android.content.Context;
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 { //感应器管理器private SensorManager sensorManager; //光线亮度private TextView light; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //当前Activity的内容是一个TextViewlight = new TextView(this); setContentView(light); //获得感应器服务 sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); //获得光线感应器Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); //注册监听器sensorManager.registerListener(listener, sensor, SensorManager. SENSOR_DELAY_NORMAL); } //Activity被销毁@Override protected void onDestroy() { super.onDestroy(); //注销监听器if (sensorManager != null) { sensorManager.unregisterListener(listener); } } //感应器事件监听器private SensorEventListener listener = new SensorEventListener() { //当感应器精度发生变化@Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } //当传感器监测到的数值发生变化时@Override public void onSensorChanged(SensorEvent event) { // values数组中第一个值就是当前的光照强度 float value = event.values[0]; light.setText("当前亮度 " + value + " lx(勒克斯)"); } }; }
备注:开发使用光线传感器无需声明权限
Android之光线传感器相关推荐
- CAMERA(12)---[Android相机]光线传感器识别环境光亮强度
[Android相机]光线传感器识别环境光亮强度 关于Android相机的开发流程可以看前一篇文章, [Android 相机]Android 相机开发的基本流程 https://blog.csdn.n ...
- [Android相机]光线传感器识别环境光亮强度
关于Android相机的开发流程可以看前一篇文章, [Android 相机]Android 相机开发的基本流程 https://blog.csdn.net/bluewindtalker/article ...
- android studio中光线传感器解析
要学习Android需要先了解android activity的生命历程,请看下图(他人博客复制):图中我们可以清晰可看到android的生命周期,onCreate() ,onStart(),onRe ...
- camera (19)---Android 相机开发的基本流程
[Android 相机]Android 相机开发的基本流程 https://blog.csdn.net/bluewindtalker/article/details/54563910 相机开发现在有2 ...
- camera资料链接整理
camera ---(1) 摄像头图像质量常用指标的测试方法 https://blog.csdn.net/zhangbijun1230/article/details/79563891 camera- ...
- android光照传感器,详解 android 光线传感器 light sensor的使用
调用anroid的光线传感器使用. 实现效果图: MainActivity.Java package hk.ust.cse.comp107x.ligthsensor; import android.c ...
- android 振动传感器,Android光线传感器
Android光线传感器[编辑] 概述 光线传感器,即光电感应器,将收到之光线讯号转变成电器信号,此电信讯号更可进一步作各种不同的开关及控制动作. 一.简介 目前智能手机上用光线传感器来调节屏幕明暗, ...
- android 获取加速度传感器值,Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】...
本文实例讲述了Android开发获取传感器数据的方法.分享给大家供大家参考,具体如下: package mobile.android.sensor; import java.util.List; im ...
- 光线传感器,方向传感器Android
传感器Android 1.AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> &l ...
- android开发中磁场传感器,Android传感器(加速度传感器,磁场传感器,光线传感器,方向传感器)...
[android]代码库package mobile.android.sensor; import java.util.List; import android.app.Activity; impor ...
最新文章
- 高德h5地图api接口_html5通过腾讯地图、高德地图、百度地图开发api接口获取坐标对应的周边信息...
- 2015年你必须学习的编程语言和前端框架
- 《像计算机科学家一样思考Python》——3.9 变量和形参是局部的
- 5M1E,软件质量管理最佳解决方案
- HDU - 3065 病毒侵袭持续中(AC自动机)
- case when then的用法
- 【NOI OpenJudge】【1.2】编程基础之变量定义、赋值及转换
- JavaScript内置对象→对象、系统函数、Date日期对象、String字符串对象、Math对象、Number数字对象、Object对象、Boolean对象、Error对象
- python立体爱心_总算认识磨砂爱心美甲步骤
- Struts分页的一个实现
- VHDL实战-----分频器的实现
- 禅道二次开发(三):二次开发实例
- 程序员需要掌握的单词
- Origin 正版模拟城市5 警告 您使用《模拟城市》产品码不支援目前选取的语言。请连络顾客支援以获得详情。
- 降噪蓝牙耳机哪个品牌好?降噪蓝牙耳机排行推荐
- 【重磅】百度智能运维工程架构
- 网易云音乐人申请教程(会唱歌即可)
- 深入 javascript 之 原型和原型链!!!
- PMP证书备考攻略+PMP知识点汇总
- 计算机映像缺失磁盘如何修复,Win10安装会遇到的问题汇总及解决方法
热门文章
- Tableau实战 网站客户细分仪表盘
- C#个人博客系统源码(前台+后台管理)
- idear——文件的刷新,清理和打包
- 《金融学》笔记 第一章 货币的本质
- 阿里P6级别Java程序员月薪多少?阿里认证员工给出答案
- 滚滚长江东逝水(三国演义插曲)铃声 滚滚长江东逝水(三国演义插...
- MATLAB编程之PTB: 实验暂停
- “车”的故事,我的信息化建设和管理愚见
- linux识别硬盘时显示gpt,Ubuntu不识别GPT硬盘已有系统的解决方案
- Gazebo模型下载