1.控制手电筒开关的工具类:
public class FlashUtils {
private CameraManager manager;
private Camera mCamera = null;
private Context context;
private boolean status = false;
FlashUtils(Context context){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
}
this.context = context;
}
public void open() {
if(status){
return;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
try {
manager.setTorchMode("0", true);
} catch (Exception e) {
e.printStackTrace();
}
} else {
PackageManager packageManager = context.getPackageManager();
FeatureInfo[] features = packageManager.getSystemAvailableFeatures();
for (FeatureInfo featureInfo : features) {
if (PackageManager.FEATURE_CAMERA_FLASH.equals(featureInfo.name)) {
if (null == mCamera) {
mCamera = Camera.open();
}
Camera.Parameters parameters = mCamera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(parameters);
mCamera.startPreview();
}
}
}
status = true;
}
public void close() {
if(!status){
return;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
try {
manager.setTorchMode("0", false);
} catch (CameraAccessException e) {
e.printStackTrace();
}
} else {
if (mCamera != null) {
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
}
status = false;
}
public void converse(){
if(status){
close();
}else{
open();
}
}
}
2.使用方法:
FlashUtils utils = new FlashUtils(this);
utils.open();
3.示例程序已上传:
https://github.com/wkxjc/FlashlightStudy