光线传感器使用


开发使用光线传感器不须要权限声明。html

使用光线传感器比较简单。(不少传感器都是相似使用的)java

1.获取感情器管理服务。android

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

2.获取光线传感器。app

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

3.编写监听器。布局

SensorEventListener listener = new SensorEventListener() {

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        //当传感器精度发生变化时
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        //当传感器监测到的数值发生变化时
    }

};

4.注册监听器。spa

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

5.不使用时记得注销监听器。htm

sensorManager.unregisterListener(listener);

直接上代码,我这的布局为一个按钮,数值变化使用log打印输出。

package com.zq.sensoradapter;

import android.app.PendingIntent;

import android.content.Context;
import android.content.Intent;

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.util.Log;
import android.view.View;
import android.widget.Button;

 



public class  MainActivity extends AppCompatActivity {

    public static final  String TAG = "亮度";



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_nfc);

        Button button = findViewById(R.id.sure_btn);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            if(!isLight){
                //注册使用
                Sensor sensor = senserManager.getDefaultSensor(Sensor.TYPE_LIGHT);//传感器管理选择光感类型
                senserManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
                isLight = true;
            }else {
                //注销监听器使用
                senserManager.unregisterListener(listener);
                isLight = false;
            }
            }
        });
        
        initLight();
    }
    private boolean isLight = false;
    private SensorEventListener listener;//传感器监听
    private SensorManager senserManager;//传感器管理
    /**
     * 初始化光感器
     */
    private void initLight() {
        senserManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        Sensor sensor = senserManager.getDefaultSensor(Sensor.TYPE_LIGHT);
        listener = new SensorEventListener() {

            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {
                //当传感器精度发生变化时
                Log.e(TAG,"当传感器精度发生变化时=" + accuracy);
            }

            @Override
            public void onSensorChanged(SensorEvent event) {
                //当传感器监测到的数值发生变化时   数组的第一个值表明着当前的光照强度 "lx(勒克斯)"
                Log.e(TAG,"当传感器监测到的数值发生变化时=" + event.values[0]);
            }

        };

    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        senserManager.unregisterListener(listener);
}
}