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

标签: Android 传感器 光线 亮度
15人阅读 评论(0) 收藏 举报
分类:

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

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

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

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


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

package com.bluewindtalker.camera.demo;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;

/**
 * @author bluewindtalker
 * @description 光线传感器工具
 * @date 2018/4/15-下午12:08
 */
public final class LightSensorUtil {

    private LightSensorUtil() {
    }

    public static SensorManager getSenosrManager(Context context){
        return  (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);

    }

    /**
     * 注册光线传感器监听器
     * @param sensorManager
     * @param listener
     */
    public static void registerLightSensor(SensorManager sensorManager,SensorEventListener listener) {
        if(sensorManager == null || listener == null){
            return;
        }
        Sensor lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); // 获取光线传感器
        if (lightSensor != null) { // 光线传感器存在时
            sensorManager.registerListener(listener, lightSensor, SensorManager.SENSOR_DELAY_NORMAL); // 注册事件监听
        }
    }
    /**
     * 反注册光线传感器监听器
     * @param sensorManager
     * @param listener
     */
    public static void unregisterLightSensor(SensorManager sensorManager,SensorEventListener listener) {
        if(sensorManager == null || listener == null){
            return;
        }
        sensorManager.unregisterListener(listener);
    }
}

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

private SensorEventListener lightSensorListener = new SensorEventListener() {
        @Override
        public void onSensorChanged(SensorEvent event) {
            if (event.sensor.getType() == Sensor.TYPE_LIGHT) {
                //光线强度
                float lux = event.values[0];
                Log.e(TAG, "光线传感器得到的光线强度-->" + lux);
            }
        }

        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {
        }
    };

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

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

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

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

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

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

查看评论

Android传感器 - 光强度传感器

Android手机内部添加了光照强度传感器,可以实时监测手机周边环境的亮度,根据周边环境的亮度可以自动调节屏幕的亮度。下面通过一个实例看一下如何监测周边环境的亮度值。主布局文件代码如下:    and...
  • yayun0516
  • yayun0516
  • 2017-03-18 11:21:13
  • 1481

Android移动开发-Android设备利用光线传感器监测光照强度的实现

光线传感器也叫感光器,它是借助于手机前置上端的一个小孔感知当前所在环境的光照强度,一旦遮住了那个小孔,光线传感器监测到的光线强度立马降低。比如生活中当手机用户打电话或接电话时手机前置上端靠近耳机时,光...
  • fukaimei
  • fukaimei
  • 2017-10-21 19:35:19
  • 909

Android光线传感器获取光线强弱。LightSensorManager封装类

在Android开发中,有时我们需要获知设备所在环境的光线强弱情况,当然这需要我们设备拥有光线传感器下面是我简单封装的一个光线传感器管理类,主要提供了3个方法:1.start():启动,在获取光照强度...
  • afei__
  • afei__
  • 2016-07-26 17:47:21
  • 5244

Android中光照传感器的用法,(检测光照强度的变化)

项目结构 核心代码: activity_main.xml     xmlns:tools="http://schemas.android.com/tools"     android:layou...
  • zhaihaohao1
  • zhaihaohao1
  • 2015-01-28 16:19:08
  • 1611

HTML5光线传感器简介

HTML5环境传感器由Sensor API描述和定义,包含了6种常见的传感器类型:        它们分别代表温度(摄氏度)、气压(千帕)、湿度(百分比)、光线(lux ,勒克司)、声音(分贝)、临近...
  • hfahe
  • hfahe
  • 2013-01-14 21:59:13
  • 6021

手机测光app

  • 2015年11月04日 16:11
  • 280KB
  • 下载

iOS 扫描二维码自动打开灯 检测环境光线强度

扫描二维码自动打开灯 检测环境光线强度,做的不太好,打开灯了没有关闭,后期优化可以打开关闭的代码,并且加一个定时器时间间隔(例如10秒左右)来控制是否改变灯的状态,否则灯会随着光线闪来闪去的。最简单 ...
  • ModalYin
  • ModalYin
  • 2017-10-31 11:30:01
  • 1297

Android之光线传感器

Android手机自带光线传感器,通常我们手机的屏幕自动亮度都是用光线传感器来实现的。该传感器在前置摄像头附近,此外,还有一个距离传感器。本文主要讲解如何使用Android手机的光线传感器。...
  • ccslff
  • ccslff
  • 2016-05-30 18:18:04
  • 4550

安卓开发中光线传感器的运用步骤

public class MainActivity extends AppCompatActivity implements SensorEventListener{ private Text...
  • ytfunnysite
  • ytfunnysite
  • 2017-03-15 17:37:30
  • 808

android简单传感器应用代码(光线传感器+计步器+指南针)

  • 2017年02月25日 11:48
  • 788KB
  • 下载
    个人资料
    持之以恒
    等级:
    访问量: 4万+
    积分: 636
    排名: 7万+
    最新评论