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)传感器接口实现方法
@Override
public void onSensorChanged(SensorEvent event) {//传感器方法1
if (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();
}
}
}
@Override
public 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