在Android开发中,有时我们需要获知设备所在环境的光线强弱情况,当然这需要我们设备拥有光线传感器

下面是我简单封装的一个光线传感器管理类,主要提供了3个方法:

1.start():启动,在获取光照强度前调用。

2.stop():停止,在不再需要获取光照强度后调用。

3.getLux():获取光照强度,单位为勒克斯(lux)。

如果你需要额外的一些方法,可以根据返回的光照强度自行添加。下面是整个LightSensorManager类

[java]  view plain copy
  1. import android.content.Context;
  2. import android.hardware.Sensor;
  3. import android.hardware.SensorEvent;
  4. import android.hardware.SensorEventListener;
  5. import android.hardware.SensorManager;
  6. import android.util.Log;
  7. public class LightSensorManager {
  8. private static final boolean DEBUG = true;
  9. private static final String TAG = "LightSensor";
  10. private static LightSensorManager instance;
  11. private SensorManager mSensorManager;
  12. private LightSensorListener mLightSensorListener;
  13. private boolean mHasStarted = false;
  14. private LightSensorManager() {
  15. }
  16. public static LightSensorManager getInstance() {
  17. if (instance == null) {
  18. instance = new LightSensorManager();
  19. }
  20. return instance;
  21. }
  22. public void start(Context context) {
  23. if (mHasStarted) {
  24. return;
  25. }
  26. mHasStarted = true;
  27. mSensorManager = (SensorManager) context.getApplicationContext().getSystemService(Context.SENSOR_SERVICE);
  28. Sensor lightSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); // 获取光线传感器
  29. if (lightSensor != null) { // 光线传感器存在时
  30. mLightSensorListener = new LightSensorListener();
  31. mSensorManager.registerListener(mLightSensorListener, lightSensor, SensorManager.SENSOR_DELAY_NORMAL); // 注册事件监听
  32. }
  33. }
  34. public void stop() {
  35. if (!mHasStarted || mSensorManager == null) {
  36. return;
  37. }
  38. mHasStarted = false;
  39. mSensorManager.unregisterListener(mLightSensorListener);
  40. }
  41. /**
  42. * 获取光线强度
  43. */
  44. public float getLux() {
  45. if (mLightSensorListener != null) {
  46. return mLightSensorListener.lux;
  47. }
  48. return -1.0f; // 默认返回-1,表示设备无光线传感器或者为调用start()方法
  49. }
  50. private class LightSensorListener implements SensorEventListener {
  51. private float lux; // 光线强度
  52. public void onAccuracyChanged(Sensor sensor, int accuracy) {
  53. }
  54. public void onSensorChanged(SensorEvent event) {
  55. if (event.sensor.getType() == Sensor.TYPE_LIGHT) {
  56. // 获取光线强度
  57. lux = event.values[0];
  58. if (DEBUG) {
  59. Log.d(TAG, "lux : " + lux);
  60. }
  61. }
  62. }
  63. }
  64. }

对于这个光线强度的值。越暗数值越低,最低应该是0,在白天室内大概有300左右,仅供参考,不知道不同的设备会不会存在一定误差。

调用程序就不贴了,通过log就可以很直接的看得到数据了。这个类在我的自定义相机里自动调节曝光程度使用到了,效果还是有的。

Android光线传感器获取光线强弱。LightSensorManager封装类相关推荐

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

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

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

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

  3. Android实例]------获取sd卡图片显示出来

    [Android实例] 获取sd卡图片显示出来 ON 六 02 2012 IN ANDROID代码仓库, ANDROID项目代码 BY ANDROID智能手机 | 评论 package com.fil ...

  4. android如何获取listview中的任意行数据

    android如何获取listview中的任意行数据 @Override public void onItemClick(AdapterView<?> arg0, View arg1, i ...

  5. android camera2获取摄像头支持的分辨率

    android camera2 获取摄像头支持的分辨率 41的for循环我注释了,代码是获取最匹配的分辨率. private Size getMatchingSize2(){Size selectSi ...

  6. android url webview,android - webview获取到当前页面的url

    android - webview获取到当前页面的url 2017-10-23 08:54 访问量: 2958 分类: 技术 使用 webview.getUrl() 即可. 可以完美返回  a.com ...

  7. Android杂谈---获取手机屏幕大小

    Android杂谈---获取手机屏幕大小 SurfaceView简单例子 玩转Android---UI篇---ZoomControls放大缩小图片 更多相关推荐 这里总结下android中关于手机屏幕 ...

  8. Android动态获取图片资源

    Android动态获取图片资源 根据文件名反向查找图片, 好像没有读取转换成数据流,性能应该不错. 回去后试试. 1. Field f= (Field)R.drawable.class.getDecl ...

  9. Android中获取正在运行的服务-------ActivityManager.RunningServiceInfo的使用

    关于PackageManager和ActivityManager的使用 ,自己也写了一些DEMO 了,基本上写的线路参考了Settings模块下的 应用程序,大家如果真正的有所兴趣,建议大家看看源码, ...

最新文章

  1. linux中select()函数分析
  2. 2020年快手校招JAVA岗笔试第一题
  3. JavaSE各阶段练习题----异常
  4. WTM重磅更新,LayuiAdmin免费用 and more
  5. 第三章 阴阳的工作机制(1)
  6. win10下Redis安装、启动教程
  7. solr的suggest模块
  8. 绑定到异步的ObservableCollection
  9. 深度学习(二十一)基于FCN的图像语义分割-CVPR 2015
  10. Controller的生命周期是Transient还是PerWebRequest?
  11. 安卓手机卡顿基础优化教程
  12. react18新特性
  13. python-一些文件相关的操作
  14. Linux常用命令|徐奥雯编辑整理|XUAOWEN
  15. 无线局域网设备安装与调试
  16. linux scons ld_run_path,使用scons替代makefile(3)
  17. driller fuzz arm问题解决记录
  18. 2021华为软件精英挑战赛,思路框架,欢迎留言讨论
  19. word文件中表格迁移到excel
  20. 思岚科技受邀CES Asia 展示机器人定位导航领先技术

热门文章

  1. php mysql保健品购物商城系统
  2. Version Detector轻量级工具
  3. 肖战画的端午粽子,心思巧妙,每个粽子都有都代表不同的意义
  4. 【GCN】: IntentGC算法框架
  5. Air Kiss(飞吻)技术实现方案
  6. wince6.0桌面背景+设置默认IP+开机自动运行程序
  7. python 抓数_使用python抓取并分析数据
  8. cookie的定义和作用
  9. 【组队学习】【29期】8. SQL编程语言
  10. 数学教学设计案例大学计算机课,优秀数学教学设计案例