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

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

关于Android相机的开发流程可以看前一篇文章, 

 [Android 相机]Android 相机开发的基本流程

https://blog.csdn.net/bluewindtalker/article/details/54563910

众所周知,一般Android手机若要识别当前环境亮度,大部分可以通过自带的光线传感器来识别,当然环境传感器包括多项数据分别是环境温度、亮度、环境压力、环境湿度、设备温度等。


下面我们仅就光线进行说明分析,以下代码是光线传感器的工具类

[java]  view plain  copy
  1. package com.bluewindtalker.camera.demo;  
  2.   
  3. import android.content.Context;  
  4. import android.hardware.Sensor;  
  5. import android.hardware.SensorEvent;  
  6. import android.hardware.SensorEventListener;  
  7. import android.hardware.SensorManager;  
  8.   
  9. /** 
  10.  * @author bluewindtalker 
  11.  * @description 光线传感器工具 
  12.  * @date 2018/4/15-下午12:08 
  13.  */  
  14. public final class LightSensorUtil {  
  15.   
  16.     private LightSensorUtil() {  
  17.     }  
  18.   
  19.     public static SensorManager getSenosrManager(Context context){  
  20.         return  (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);  
  21.   
  22.     }  
  23.   
  24.     /** 
  25.      * 注册光线传感器监听器 
  26.      * @param sensorManager 
  27.      * @param listener 
  28.      */  
  29.     public static void registerLightSensor(SensorManager sensorManager,SensorEventListener listener) {  
  30.         if(sensorManager == null || listener == null){  
  31.             return;  
  32.         }  
  33.         Sensor lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); // 获取光线传感器  
  34.         if (lightSensor != null) { // 光线传感器存在时  
  35.             sensorManager.registerListener(listener, lightSensor, SensorManager.SENSOR_DELAY_NORMAL); // 注册事件监听  
  36.         }  
  37.     }  
  38.     /** 
  39.      * 反注册光线传感器监听器 
  40.      * @param sensorManager 
  41.      * @param listener 
  42.      */  
  43.     public static void unregisterLightSensor(SensorManager sensorManager,SensorEventListener listener) {  
  44.         if(sensorManager == null || listener == null){  
  45.             return;  
  46.         }  
  47.         sensorManager.unregisterListener(listener);  
  48.     }  
  49. }  

 然后我们看下监听器的实现细节。

[java]  view plain  copy
  1. private SensorEventListener lightSensorListener = new SensorEventListener() {  
  2.         @Override  
  3.         public void onSensorChanged(SensorEvent event) {  
  4.             if (event.sensor.getType() == Sensor.TYPE_LIGHT) {  
  5.                 //光线强度  
  6.                 float lux = event.values[0];  
  7.                 Log.e(TAG, "光线传感器得到的光线强度-->" + lux);  
  8.             }  
  9.         }  
  10.   
  11.         @Override  
  12.         public void onAccuracyChanged(Sensor sensor, int accuracy) {  
  13.         }  
  14.     };  

这里我们要注意下,谷歌官方提到

最好在onResume注册和onPause里面反注册传感器,为了防止高耗能。

 这里我们直接在onSensorChanged方法里进行触发回调即可,但是这个回调是当光线亮度发生变化的时候才会触发回调,不会定时回调的,同时大部分光线传感器都设置安装在手机的正面,导致无法使用手机背面的摄像头捕捉亮度,于是乎我们不得不再次通过技术的方式来从摄像头来识别周围环境光强度。请看下篇文章。

[Android相机]通过手机摄像头识别环境亮度

本文demo在 https://github.com/bluewindtalker/camerademo

涉及到的谷歌官方的demo是https://developer.android.com/guide/topics/sensors/sensors_environment.html

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
KNK-S5030TF是一款WiFi IP摄像头,可以通过Android应用程序进行控制和管理。该应用程序提供了许多功能和特点,使用户能够方便地使用和控制摄像头。 首先,通过这个应用程序,用户可以远程实时监视摄像头的视频流。无论用户身在何处,只需打开应用程序,即可实时查看摄像头所拍摄的画面。这使得用户能够随时随地监视家庭、办公场所或其他重要地点,提供了更高的安全性。 其次,该应用程序还提供了移动检测功能。一旦摄像头监测到移动物体,应用程序会向用户发送通知,以便用户及时了解并采取必要的措施。这对于保护财产、监视婴儿或宠物等方面非常有帮助。 此外,用户还可以通过应用程序进行录像或拍照。用户可以选择将摄像头的视频流录制到手机的存储空间中,以便以后查看或共享。同时,用户也可以在应用程序中拍照,将摄像头所拍摄的画面保存为图片。 最后,应用程序还具备一些设置选项,例如调整摄像头的亮度、对比度和解析度等。这使得用户能够根据自己的需求和环境来调整摄像头的配置,以获得最佳的使用体验。 总之,KNK-S5030TF的Android应用程序为用户提供了便捷和灵活的控制摄像头的方式。通过这个应用程序,用户可以随时随地监视重要场所,收到移动检测通知,进行录像和拍照,并调整摄像头的配置。这使得该摄像头成为保护家庭和办公场所安全的理想选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值