这篇文章将为大家详细讲解有关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是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。
关于“Android编程如何使用光线传感器获取光线强弱”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。