开发使用光线传感器不需要权限声明。
使用光线传感器比较简单。(很多传感器都是类似使用的)
1.获取感情器管理服务。
SensorManager senserManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
2.获取光线传感器。
Sensor sensor = senserManager.getDefaultSensor(Sensor.TYPE_LIGHT);
3.编写监听器。
SensorEventListener listener = new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
//当传感器精度发生变化时
}
@Override
public void onSensorChanged(SensorEvent event) {
//当传感器监测到的数值发生变化时
}
};
4.注册监听器。
senserManager.registerListener(listener, senser, SensorManager.SENSOR_ DELAY_NORMAL);
5.不使用时记得注销监听器。
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);
}
}