Android學習筆記(6)-光照感測器
阿新 • • 發佈:2019-01-23
1.新建Module,activity_main.xml中定義一個TextView,用來顯示光照強度:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/light_level"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textSize="20sp"/>
</RelativeLayout>
2.MainActivity.java:
package com.imooc.lightsensortest;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private SensorManager sensorManager;//系統所有感測器的管理器,有了它的例項後就可以呼叫getDefaultSensor()方法來得到任意的感測器型別
private TextView lightLevel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lightLevel=(TextView)findViewById(R.id.light_level);
sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
Sensor sensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
//三個引數:1.SensorEventListener的例項 2.Sensor的例項 3.用於表示感測器輸出資訊的更新速率
//引數三有4個值:SENSOR_DELAY_UI,SENSOR_DELAY_NORMAL,SENSOR_DELAY_GAME,SENSOR_DELAY_FASTEST,更新速率依次遞增
sensorManager.registerListener(listener,sensor,SensorManager.SENSOR_DELAY_NORMAL);
}
private SensorEventListener listener=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
//values陣列中第一個下標的值就是當前的光照強度
float value=event.values[0];
lightLevel.setText("Current light level is"+value+"lx");//單位:勒克斯
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
@Override
protected void onDestroy() {
super.onDestroy();
if(sensorManager!=null){
sensorManager.unregisterListener(listener);//onDestory()方法中呼叫unregisterListener()方法釋放使用的資源
}
}
}