1. 程式人生 > >Android學習筆記(6)-光照感測器

Android學習筆記(6)-光照感測器

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()方法釋放使用的資源 } } }