Android编程使用光线传感器获取光线强弱的方法【LightSensorManager封装类】

Android编程使用光线传感器获取光线强弱的方法【LightSensorManager封装类】,第1张

概述本文实例讲述了Android编程使用光线传感器获取光线强弱的方法。分享给大家供大家参考,具体如下:

本文实例讲述了AndroID编程使用光线传感器获取光线强弱的方法。分享给大家供大家参考,具体如下:

在AndroID开发中,有时我们需要获知设备所在环境的光线强弱情况,当然这需要我们设备拥有光线传感器。通常我们手机的屏幕自动亮度都是用光线传感器来实现的。该传感器在前置摄像头附近,此外,还有一个距离传感器。这里我们主要讲解如何使用AndroID手机的光线传感器。

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

1.start():启动,在获取光照强度前调用。
2.stop():停止,在不再需要获取光照强度后调用。
3.getLux():获取光照强度,单位为勒克斯(lux)。

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

import androID.content.Context;import androID.harDWare.Sensor;import androID.harDWare.SensorEvent;import androID.harDWare.SensorEventListener;import androID.harDWare.SensorManager;import androID.util.Log;public class lightSensorManager {  private static final boolean DEBUG = true;  private static final String TAG = "lightSensor";  private static lightSensorManager instance;  private SensorManager mSensorManager;  private lightSensorListener mlightSensorListener;  private boolean mHasstarted = false;  private lightSensorManager() {  }  public static lightSensorManager getInstance() {    if (instance == null) {      instance = new lightSensorManager();    }    return instance;  }  public voID start(Context context) {    if (mHasstarted) {      return;    }    mHasstarted = true;    mSensorManager = (SensorManager) context.getApplicationContext().getSystemService(Context.SENSOR_SERVICE);    Sensor lightSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_liGHT); // 获取光线传感器    if (lightSensor != null) { // 光线传感器存在时      mlightSensorListener = new lightSensorListener();      mSensorManager.registerListener(mlightSensorListener,lightSensor,SensorManager.SENSOR_DELAY_norMAL); // 注册事件监听    }  }  public voID stop() {    if (!mHasstarted || mSensorManager == null) {      return;    }    mHasstarted = false;    mSensorManager.unregisterListener(mlightSensorListener);  }  /**   * 获取光线强度   */  public float getLux() {    if (mlightSensorListener != null) {      return mlightSensorListener.lux;    }    return -1.0f; // 默认返回-1,表示设备无光线传感器或者为调用start()方法  }  private class lightSensorListener implements SensorEventListener {    private float lux; // 光线强度    public voID onAccuracyChanged(Sensor sensor,int accuracy) {    }    public voID onSensorChanged(SensorEvent event) {      if (event.sensor.getType() == Sensor.TYPE_liGHT) {        // 获取光线强度        lux = event.values[0];        if (DEBUG) {          Log.d(TAG,"lux : " + lux);        }      }    }  }}

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

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

更多关于AndroID相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android视图View技巧总结》、《Android编程之activity *** 作技巧总结》、《Android *** 作SQLite数据库技巧总结》、《Android *** 作json格式数据技巧总结》、《Android资源 *** 作技巧汇总》及《Android控件用法总结》

希望本文所述对大家AndroID程序设计有所帮助。

总结

以上是内存溢出为你收集整理的Android编程使用光线传感器获取光线强弱的方法【LightSensorManager封装类】全部内容,希望文章能够帮你解决Android编程使用光线传感器获取光线强弱的方法【LightSensorManager封装类】所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1143893.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存