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之光线传感器相关推荐

  1. CAMERA(12)---[Android相机]光线传感器识别环境光亮强度

    [Android相机]光线传感器识别环境光亮强度 关于Android相机的开发流程可以看前一篇文章, [Android 相机]Android 相机开发的基本流程 https://blog.csdn.n ...

  2. [Android相机]光线传感器识别环境光亮强度

    关于Android相机的开发流程可以看前一篇文章, [Android 相机]Android 相机开发的基本流程 https://blog.csdn.net/bluewindtalker/article ...

  3. android studio中光线传感器解析

    要学习Android需要先了解android activity的生命历程,请看下图(他人博客复制):图中我们可以清晰可看到android的生命周期,onCreate() ,onStart(),onRe ...

  4. camera (19)---Android 相机开发的基本流程

    [Android 相机]Android 相机开发的基本流程 https://blog.csdn.net/bluewindtalker/article/details/54563910 相机开发现在有2 ...

  5. camera资料链接整理

    camera ---(1) 摄像头图像质量常用指标的测试方法 https://blog.csdn.net/zhangbijun1230/article/details/79563891 camera- ...

  6. android光照传感器,详解 android 光线传感器 light sensor的使用

    调用anroid的光线传感器使用. 实现效果图: MainActivity.Java package hk.ust.cse.comp107x.ligthsensor; import android.c ...

  7. android 振动传感器,Android光线传感器

    Android光线传感器[编辑] 概述 光线传感器,即光电感应器,将收到之光线讯号转变成电器信号,此电信讯号更可进一步作各种不同的开关及控制动作. 一.简介 目前智能手机上用光线传感器来调节屏幕明暗, ...

  8. android 获取加速度传感器值,Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】...

    本文实例讲述了Android开发获取传感器数据的方法.分享给大家供大家参考,具体如下: package mobile.android.sensor; import java.util.List; im ...

  9. 光线传感器,方向传感器Android

    传感器Android 1.AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> &l ...

  10. android开发中磁场传感器,Android传感器(加速度传感器,磁场传感器,光线传感器,方向传感器)...

    [android]代码库package mobile.android.sensor; import java.util.List; import android.app.Activity; impor ...

最新文章

  1. 高德h5地图api接口_html5通过腾讯地图、高德地图、百度地图开发api接口获取坐标对应的周边信息...
  2. 2015年你必须学习的编程语言和前端框架
  3. 《像计算机科学家一样思考Python》——3.9 变量和形参是局部的
  4. 5M1E,软件质量管理最佳解决方案
  5. HDU - 3065 病毒侵袭持续中(AC自动机)
  6. case when then的用法
  7. 【NOI OpenJudge】【1.2】编程基础之变量定义、赋值及转换
  8. JavaScript内置对象→对象、系统函数、Date日期对象、String字符串对象、Math对象、Number数字对象、Object对象、Boolean对象、Error对象
  9. python立体爱心_总算认识磨砂爱心美甲步骤
  10. Struts分页的一个实现
  11. VHDL实战-----分频器的实现
  12. 禅道二次开发(三):二次开发实例
  13. 程序员需要掌握的单词
  14. Origin 正版模拟城市5 警告 您使用《模拟城市》产品码不支援目前选取的语言。请连络顾客支援以获得详情。
  15. 降噪蓝牙耳机哪个品牌好?降噪蓝牙耳机排行推荐
  16. 【重磅】百度智能运维工程架构
  17. 网易云音乐人申请教程(会唱歌即可)
  18. 深入 javascript 之 原型和原型链!!!
  19. PMP证书备考攻略+PMP知识点汇总
  20. 计算机映像缺失磁盘如何修复,Win10安装会遇到的问题汇总及解决方法

热门文章

  1. Tableau实战 网站客户细分仪表盘
  2. C#个人博客系统源码(前台+后台管理)
  3. idear——文件的刷新,清理和打包
  4. 《金融学》笔记 第一章 货币的本质
  5. 阿里P6级别Java程序员月薪多少?阿里认证员工给出答案
  6. 滚滚长江东逝水(三国演义插曲)铃声 滚滚长江东逝水(三国演义插...
  7. MATLAB编程之PTB: 实验暂停
  8. “车”的故事,我的信息化建设和管理愚见
  9. linux识别硬盘时显示gpt,Ubuntu不识别GPT硬盘已有系统的解决方案
  10. Gazebo模型下载