中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android編程如何使用光線傳感器獲取光線強弱

發布時間:2021-05-25 09:39:54 來源:億速云 閱讀:349 作者:小新 欄目:移動開發

這篇文章將為大家詳細講解有關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是一種基于Linux內核的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。

關于“Android編程如何使用光線傳感器獲取光線強弱”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

呈贡县| 鲁山县| 日照市| 平南县| 江孜县| 札达县| 长兴县| 山西省| 乃东县| 永州市| 奇台县| 邻水| 贡山| 杨浦区| 鲁甸县| 敖汉旗| 开江县| 镇坪县| 无为县| 利川市| 嘉黎县| 东乡| 南京市| 德安县| 郧西县| 嵩明县| 遵义市| 毕节市| 舞钢市| 齐齐哈尔市| 崇明县| 深州市| 久治县| 醴陵市| 武平县| 清水河县| 凤翔县| 华容县| 马鞍山市| 台中市| 怀宁县|