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

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

詳解Android之光線傳感器用法

2020-02-21 17:24:36
字體:
供稿:網(wǎng)友

說到光線傳感器,相信大家都不熟悉,小編要是不接觸這方面的知識,也是不清楚的,其實傳感器是Android手機自帶的一個功能,今天就讓武林技術頻道小編為你詳解Android之光線傳感器用法吧!

獲得感應器服務

Android開發(fā)中要使用光線傳感器,需要先獲得系統(tǒng)傳感器服務Context.SENSOR_SERVICE,獲得方法如下:

SensorManager senserManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

獲得光線傳感器

SensorManager是系統(tǒng)傳感器服務,是系統(tǒng)所有傳感器的管理器。通過它,我們獲得制定類型的傳感器,獲得光線傳感器的方法如下:

Sensor sensor = senserManager.getDefaultSensor(Sensor.TYPE_LIGHT);

代碼中Sensor.TYPE_LIGHT是指光線傳感器。

Sensor中還有許多其他的傳感器,這里暫不討論。

編寫監(jiān)聽器

有了sensor對象之后,我們需要對該感應器進行監(jiān)聽,使用 SensorEventListener 接口,主要有onSensorChanged()onAccuracyChanged()這兩個方法,代碼如下:

SensorEventListener listener = new SensorEventListener() {  @Override  public void onAccuracyChanged(Sensor sensor, int accuracy) {    //當傳感器精度發(fā)生變化時  }  @Override  public void onSensorChanged(SensorEvent event) {    //當傳感器監(jiān)測到的數(shù)值發(fā)生變化時  }};

注冊監(jiān)聽器

接下來我們還需要調(diào)用SensorManager的registerListener()方法來注冊SensorEventListener才能使其生效,registerListener()方法包含三個參數(shù):SensorEventListener實例,Sensor的實例和傳感器輸出信息更新速率。

傳感器輸出信息更新速率有:

SENSOR_DELAY_UI
SENSOR_DELAY_NORMAL
SENSOR_DELAY_GAME
SENSOR_DELAY_FASTEST

總共四種值可選,它們的更新速率是依次遞增的。

注冊SensorEventListener的代碼如下:

senserManager.registerListener(listener, senser, SensorManager.SENSOR_ DELAY_NORMAL);

注銷監(jiān)聽器

最后,當程序退出或傳感器使用完畢時,一定要調(diào)用unregisterListener()方法將使用的資源釋放掉,如下所示:

sensorManager.unregisterListener(listener);

DEMO示例:

package com.test.sensor.light;import android.app.Activity;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.os.Bundle;import android.widget.TextView;public class MainActivity extends Activity {  //感應器管理器  private SensorManager sensorManager;  //光線亮度  private TextView light;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    //當前Activity的內(nèi)容是一個TextView    light = new TextView(this);    setContentView(light);    //獲得感應器服務    sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);    //獲得光線感應器    Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);    //注冊監(jiān)聽器    sensorManager.registerListener(listener, sensor, SensorManager. SENSOR_DELAY_NORMAL);  }  //Activity被銷毀  @Override  protected void onDestroy() {    super.onDestroy();    //注銷監(jiān)聽器    if (sensorManager != null) {      sensorManager.unregisterListener(listener);    }  }  //感應器事件監(jiān)聽器  private SensorEventListener listener = new SensorEventListener() {    //當感應器精度發(fā)生變化    @Override    public void onAccuracyChanged(Sensor sensor, int accuracy) {    }    //當傳感器監(jiān)測到的數(shù)值發(fā)生變化時    @Override    public void onSensorChanged(SensorEvent event) {      // values數(shù)組中第一個值就是當前的光照強度      float value = event.values[0];      light.setText("當前亮度 " + value + " lx(勒克斯)");    }  };}

備注:開發(fā)使用光線傳感器無需聲明Android Manifest權限

另外,對于一些程序,在改變當前程序屏幕亮度的時候,可以考慮加入光照傳感器的判斷。

因為大部分這些程序,會出現(xiàn)這樣的一個問題,當(在非自動亮度調(diào)節(jié)模式)設定屏幕亮度為一個值時,再設置為自動亮度調(diào)節(jié)模式的時候是無效的。

以上就是武林技術頻道小編為你介紹的詳解Android之光線傳感器用法,這些實用的知識,你們記住了多少呢?武林技術頻道小編會為大家繼續(xù)推薦更多知識。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 公主岭市| 宜丰县| 通城县| 平邑县| 开原市| 广西| 松溪县| 莲花县| 独山县| 冀州市| 齐河县| 当阳市| 枣强县| 个旧市| 德令哈市| 珲春市| 南漳县| 慈溪市| 忻州市| 和静县| 沙坪坝区| 高碑店市| 涟源市| 方正县| 盐城市| 虹口区| 万州区| 乌拉特前旗| 商南县| 海盐县| 南雄市| 元阳县| 盐亭县| 西峡县| 青神县| 鄂尔多斯市| 遵化市| 韶关市| 武胜县| 达孜县| 轮台县|