Android 打开关闭闪光灯工具类
16lz
2021-01-23
整合了个Android闪光灯工具类
API23以上使用Camera2,API23以下使用旧版的Camera。
直接上代码
API23以上使用Camera2,API23以下使用旧版的Camera。
直接上代码
import android.content.Context;import android.content.pm.PackageManager;import android.hardware.Camera;import android.hardware.camera2.CameraAccessException;import android.hardware.camera2.CameraManager;import android.os.Build;public class FlashlightHelper { private boolean flashlightAvailable; private Camera camera; private CameraManager cameraManager; private String cameraId; public FlashlightHelper(Context context) { flashlightAvailable = context.getApplicationContext().getPackageManager() .hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { cameraManager = (CameraManager) context.getApplicationContext().getSystemService(Context.CAMERA_SERVICE); try { if (cameraManager != null) { cameraId = cameraManager.getCameraIdList()[0]; } } catch (CameraAccessException e) { e.printStackTrace(); } } } /** * 开启闪光灯 * * @return 是否开启成功 */ public boolean open() { if (!flashlightAvailable) { return false; } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { try { cameraManager.setTorchMode(cameraId, true); return true; } catch (CameraAccessException e) { e.printStackTrace(); return false; } } else { try { camera = Camera.open(); camera.startPreview(); Camera.Parameters parameters = camera.getParameters(); parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); camera.setParameters(parameters); return true; } catch (Exception e) { e.printStackTrace(); return false; } } } /** * 关闭闪光灯 * * @return 是否关闭成功 */ public boolean close() { if (!flashlightAvailable) { return false; } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { try { cameraManager.setTorchMode(cameraId, false); return true; } catch (CameraAccessException e) { e.printStackTrace(); return false; } } else { try { if (camera != null) { Camera.Parameters parameters = camera.getParameters(); parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); camera.setParameters(parameters); camera.stopPreview(); camera.release(); camera = null; } else { return false; } return true; } catch (Exception e) { e.printStackTrace(); return false; } } }}
更多相关文章
- Android代码混淆一定要Export Android Application,否则不起效
- Android的Location功能代码
- 第一行代码笔记之——Activity启动模式
- Android:简单联网获取网页代码
- Android 开发笔记 - Android Studio 代码模板
- android源代码下载及编译
- android 用代码画圆
- android用代码实现圆角背景
- 小编程(三):用户登录注册界面开发及用户信息管理案例代码详解