国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android編程使用光線傳感器獲取光線強弱的方法【LightSensorManager封裝類】

2019-10-22 18:24:20
字體:
供稿:網(wǎng)友

本文實例講述了Android編程使用光線傳感器獲取光線強弱的方法。分享給大家供大家參考,具體如下:

在Android開發(fā)中,有時我們需要獲知設(shè)備所在環(huán)境的光線強弱情況,當(dāng)然這需要我們設(shè)備擁有光線傳感器。通常我們手機的屏幕自動亮度都是用光線傳感器來實現(xiàn)的。該傳感器在前置攝像頭附近,此外,還有一個距離傳感器。這里我們主要講解如何使用Android手機的光線傳感器。

下面是我簡單封裝的一個光線傳感器管理類,主要提供了3個方法:

1.start():啟動,在獲取光照強度前調(diào)用。
2.stop():停止,在不再需要獲取光照強度后調(diào)用。
3.getLux():獲取光照強度,單位為勒克斯(lux)。

如果你需要額外的一些方法,可以根據(jù)返回的光照強度自行添加。下面是整個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); // 注冊事件監(jiān)聽    }  }  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; // 默認(rèn)返回-1,表示設(shè)備無光線傳感器或者為調(diào)用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);        }      }    }  }}

對于這個光線強度的值。越暗數(shù)值越低,最低應(yīng)該是0,在白天室內(nèi)大概有300左右,僅供參考,不知道不同的設(shè)備會不會存在一定誤差。

調(diào)用程序就不貼了,通過log就可以很直接的看得到數(shù)據(jù)了。這個類在我的自定義相機里自動調(diào)節(jié)曝光程度使用到了,效果還是有的。

希望本文所述對大家Android程序設(shè)計有所幫助。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 江口县| 易门县| 修文县| 长岭县| 广灵县| 个旧市| 高州市| 齐齐哈尔市| 长寿区| 阳曲县| 蓝田县| 建德市| 达拉特旗| 宾川县| 大竹县| 桑日县| 精河县| 阿巴嘎旗| 横山县| 龙山县| 龙海市| 新绛县| 清原| 高陵县| 馆陶县| 小金县| 六盘水市| 日照市| 南雄市| 冀州市| 宜兴市| 郓城县| 承德市| 连南| 北流市| 江西省| 长武县| 安多县| 东乌珠穆沁旗| 江口县| 双柏县|