1、获取光线强度
(1)实现传感器接口 implements SensorEventListener
实例化
private SensorManager mSensroMgr;//传感器管理类
mSensroMgr = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
(2)监听传感器
@Override
protected void onPause() {super.onPause();mSensroMgr.unregisterListener(TestClass.this);//断开监听传感器
}@Override
protected void onResume() {super.onResume();mSensroMgr.registerListener(this, mSensroMgr.getDefaultSensor(Sensor.TYPE_LIGHT),SensorManager.SENSOR_DELAY_NORMAL);//开启监听传感器
}
(3)传感器接口实现方法
@Overridepublic void onSensorChanged(SensorEvent event) {//传感器方法1if (event.sensor.getType() == Sensor.TYPE_LIGHT) {float light_strength = event.values[0];//光线强度
// Toast.makeText(MainActivity.this,">..."+light_strength,Toast.LENGTH_SHORT).show();
// tv_light.setText(Utils.getNowDateTimeFormat() + "\n当前光线强度为" + light_strength);textView.setText("" + light_strength);if (light_strength < 50) {openFlash();} else {closeFlash();}}}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {//传感器方法2//当传感器精度改变时回调该方法,一般无需处理}
2、1闪光灯控制方法
private CameraManager manager;
private Camera camera;
@SuppressLint("NewApi")
private void openFlash() {//开启闪光灯try {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {manager = (CameraManager) this.getSystemService(Context.CAMERA_SERVICE);if (manager != null) {manager.setTorchMode("0", true);}} else {camera = Camera.open();Camera.Parameters parameters = camera.getParameters();parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);camera.setParameters(parameters);camera.startPreview();}} catch (Exception e) {e.printStackTrace();}
}@SuppressLint("NewApi")
private void closeFlash() {//关闭闪光灯if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {try {if (manager == null) {return;}manager.setTorchMode("0", false);} catch (Exception e) {e.printStackTrace();}} else {if (camera == null) {return;}camera.stopPreview();camera.release();}
}
2、2闪光灯控制方法
private boolean ifopen=false;
@SuppressLint("NewApi") private void openFlash() {//开启闪光灯Log.i("lgq","kaisssssssssssssssss");try {Camera.Parameters p = mCamera.getParameters();p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);//持续的亮灯mCamera.setParameters(p);ifopen=true;} catch (Exception e) {e.printStackTrace();} }@SuppressLint("NewApi") private void closeFlash() {//关闭闪光灯Log.i("lgq","ggggggggggggggsssssssssssssssss");Camera.Parameters p = mCamera.getParameters();p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);mCamera.setParameters(p);ifopen=false; }
Android 设置手机屏幕亮度:https://blog.csdn.net/meixi_android/article/details/88681942