开发使用光线传感器不须要权限声明。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);
}}