這篇文章將為大家詳細(xì)講解有關(guān)Android編程如何使用光線傳感器獲取光線強(qiáng)弱,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司是一家服務(wù)多年做網(wǎng)站建設(shè)策劃設(shè)計(jì)制作的公司,為廣大用戶提供了網(wǎng)站建設(shè)、成都網(wǎng)站制作,成都網(wǎng)站設(shè)計(jì),廣告投放平臺(tái),成都做網(wǎng)站選創(chuàng)新互聯(lián),貼合企業(yè)需求,高性價(jià)比,滿足客戶不同層次的需求一站式服務(wù)歡迎致電。
本文實(shí)例講述了Android編程使用光線傳感器獲取光線強(qiáng)弱的方法。分享給大家供大家參考,具體如下:
在Android開發(fā)中,有時(shí)我們需要獲知設(shè)備所在環(huán)境的光線強(qiáng)弱情況,當(dāng)然這需要我們?cè)O(shè)備擁有光線傳感器。通常我們手機(jī)的屏幕自動(dòng)亮度都是用光線傳感器來實(shí)現(xiàn)的。該傳感器在前置攝像頭附近,此外,還有一個(gè)距離傳感器。這里我們主要講解如何使用Android手機(jī)的光線傳感器。
下面是我簡單封裝的一個(gè)光線傳感器管理類,主要提供了3個(gè)方法:
1.start()
:啟動(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)聽 } } 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è)備無光線傳感器或者為調(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)用程序就不貼了,通過log就可以很直接的看得到數(shù)據(jù)了。這個(gè)類在我的自定義相機(jī)里自動(dòng)調(diào)節(jié)曝光程度使用到了,效果還是有的。
Android是一種基于Linux內(nèi)核的自由及開放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由美國Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。
關(guān)于“Android編程如何使用光線傳感器獲取光線強(qiáng)弱”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
本文名稱:Android編程如何使用光線傳感器獲取光線強(qiáng)弱
本文路徑:http://www.chinadenli.net/article12/jcoggc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司、企業(yè)網(wǎng)站制作、電子商務(wù)、移動(dòng)網(wǎng)站建設(shè)、企業(yè)建站、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)