手电筒/手电筒应用程序(android.hardware.camera 已弃用)
Torch / Flashlight app (android.hardware.camera is deprecated)
我有一个使用此代码的手电筒/手电筒应用程序
开启
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.startPreview();
关闭
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(params);
camera.stopPreview();
然而现在
android.hardware.Camera has been deprecated and It is advised to use the new camera2 api instead.
关于如何使用 camera2
打开 on/off 设备手电筒的任何帮助?
感谢您的帮助
首先,已弃用的 android.hardware.Camera API 仍然可以正常工作,如果您需要支持 Android 早于 5.0 Lollipop 的版本,您仍然需要使用它。
最新 Android 版本(Android Marshmallow 或更新版本)的最简单选项是新的直接手电筒控制:CameraManager.setTorchMode
使用起来非常简单,而且不需要相机权限。
所以我会推荐以下内容:
Pre-API 23,使用已弃用的相机 API 和您现有的方法(不要忘记设置预览显示,虚拟 SurfaceTexture 是最简单的)。您将需要相机权限和运行时权限请求处理。
API 23 或更高版本,使用 setTorchMode 调用,您甚至不需要请求任何特定的运行时权限。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mCameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
try {
for (String camID : mCameraManager.getCameraIdList()) {
CameraCharacteristics cameraCharacteristics = mCameraManager.getCameraCharacteristics(camID);
int lensFacing = cameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
if (lensFacing == CameraCharacteristics.LENS_FACING_FRONT
&& cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) {
mCameraId = camID;
break;
} else if (lensFacing == CameraCharacteristics.LENS_FACING_BACK
&& cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) {
mCameraId = camID;
}
if (mCameraId != null) {
mCameraManager.setTorchMode(mCameraId, true);
}
}
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
我有一个使用此代码的手电筒/手电筒应用程序
开启
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.startPreview();
关闭
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(params);
camera.stopPreview();
然而现在
android.hardware.Camera has been deprecated and It is advised to use the new camera2 api instead.
关于如何使用 camera2
打开 on/off 设备手电筒的任何帮助?
感谢您的帮助
首先,已弃用的 android.hardware.Camera API 仍然可以正常工作,如果您需要支持 Android 早于 5.0 Lollipop 的版本,您仍然需要使用它。
最新 Android 版本(Android Marshmallow 或更新版本)的最简单选项是新的直接手电筒控制:CameraManager.setTorchMode
使用起来非常简单,而且不需要相机权限。
所以我会推荐以下内容:
Pre-API 23,使用已弃用的相机 API 和您现有的方法(不要忘记设置预览显示,虚拟 SurfaceTexture 是最简单的)。您将需要相机权限和运行时权限请求处理。
API 23 或更高版本,使用 setTorchMode 调用,您甚至不需要请求任何特定的运行时权限。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mCameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
try {
for (String camID : mCameraManager.getCameraIdList()) {
CameraCharacteristics cameraCharacteristics = mCameraManager.getCameraCharacteristics(camID);
int lensFacing = cameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
if (lensFacing == CameraCharacteristics.LENS_FACING_FRONT
&& cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) {
mCameraId = camID;
break;
} else if (lensFacing == CameraCharacteristics.LENS_FACING_BACK
&& cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) {
mCameraId = camID;
}
if (mCameraId != null) {
mCameraManager.setTorchMode(mCameraId, true);
}
}
} catch (CameraAccessException e) {
e.printStackTrace();
}
}