最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年11月02日 10:08:27   作者:阿飛__  
這篇文章主要介紹了Android編程使用光線傳感器獲取光線強(qiáng)弱的方法,結(jié)合實(shí)例形式分析了Android光線傳感器管理封裝類LightSensorManager的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下

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

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

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

1.start():?jiǎn)?dòng),在獲取光照強(qiáng)度前調(diào)用。
2.stop():停止,在不再需要獲取光照強(qiáng)度后調(diào)用。
3.getLux():獲取光照強(qiáng)度,單位為勒克斯(lux)。

如果你需要額外的一些方法,可以根據(jù)返回的光照強(qiáng)度自行添加。下面是整個(gè)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) { // 光線傳感器存在時(shí)
      mLightSensorListener = new LightSensorListener();
      mSensorManager.registerListener(mLightSensorListener, lightSensor, SensorManager.SENSOR_DELAY_NORMAL); // 注冊(cè)事件監(jiān)聽(tīng)
    }
  }
  public void stop() {
    if (!mHasStarted || mSensorManager == null) {
      return;
    }
    mHasStarted = false;
    mSensorManager.unregisterListener(mLightSensorListener);
  }
  /**
   * 獲取光線強(qiáng)度
   */
  public float getLux() {
    if (mLightSensorListener != null) {
      return mLightSensorListener.lux;
    }
    return -1.0f; // 默認(rèn)返回-1,表示設(shè)備無(wú)光線傳感器或者為調(diào)用start()方法
  }
  private class LightSensorListener implements SensorEventListener {
    private float lux; // 光線強(qiáng)度
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    }
    public void onSensorChanged(SensorEvent event) {
      if (event.sensor.getType() == Sensor.TYPE_LIGHT) {
        // 獲取光線強(qiáng)度
        lux = event.values[0];
        if (DEBUG) {
          Log.d(TAG, "lux : " + lux);
        }
      }
    }
  }
}

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

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

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開(kāi)發(fā)入門與進(jìn)階教程》、《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android操作SQLite數(shù)據(jù)庫(kù)技巧總結(jié)》、《Android操作json格式數(shù)據(jù)技巧總結(jié)》、《Android資源操作技巧匯總》及《Android控件用法總結(jié)

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

相關(guān)文章

最新評(píng)論

扎兰屯市| 辛集市| 淅川县| 双城市| 靖宇县| 营山县| 大田县| 嘉黎县| 宜君县| 吴江市| 五华县| 融水| 蒲江县| 卓资县| 孝感市| 岢岚县| 安陆市| 新昌县| 五原县| 旬邑县| 屏边| 河北省| 西昌市| 白沙| 修武县| 麻城市| 介休市| 大安市| 鄯善县| 乐陵市| 临清市| 英吉沙县| 上高县| 崇义县| 丰县| 肥东县| 林口县| 容城县| 崇信县| 晴隆县| 寿光市|