Android 获取光线强弱,开启闪光灯,关闭闪光灯

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

猜你喜欢

转载自blog.csdn.net/meixi_android/article/details/88965994
今日推荐