首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >火炬/手电筒应用程序(不推荐android.hardware.camera)

火炬/手电筒应用程序(不推荐android.hardware.camera)
EN

Stack Overflow用户
提问于 2016-05-20 20:22:08
回答 2查看 1.9K关注 0票数 4

我有一个手电筒/手电筒应用程序使用这个代码

打开

代码语言:javascript
复制
    params = camera.getParameters();
    params.setFlashMode(Parameters.FLASH_MODE_TORCH);
    camera.setParameters(params);
    camera.startPreview();

关上

代码语言:javascript
复制
    params = camera.getParameters();
    params.setFlashMode(Parameters.FLASH_MODE_OFF);
    camera.setParameters(params);
    camera.stopPreview();

然而,现在

android.hardware.Camera已被废弃,建议使用新的camera2 api。

对于如何使用camera2打开/关闭设备的手电筒,有什么帮助吗?

谢谢你的帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-23 01:58:04

首先,不推荐的android.hardware.Camera API仍然运行良好,如果您需要支持比5.0olliop更早的版本,则仍然需要使用它。

最新的Android版本(Android或更新版本)最简单的选择是新的直接手电筒控制:CameraManager.setTorchMode

这是非常简单的使用,不需要相机的许可。

因此,我建议如下:

预API 23,使用不推荐的Camera和您现有的方法(不要忘记设置预览显示,一个虚拟SurfaceTexture是最简单的)。您将需要相机权限和运行时权限请求处理。

API 23或更高版本,使用setTorchMode调用,您甚至不需要请求任何特定的运行时权限。

票数 3
EN

Stack Overflow用户

发布于 2018-03-07 05:58:03

代码语言:javascript
复制
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();
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37355240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档