首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在安卓中以编程方式打开FlashLight

如何在安卓中以编程方式打开FlashLight
EN

Stack Overflow用户
提问于 2015-02-22 16:43:17
回答 3查看 14.9K关注 0票数 9
代码语言:javascript
复制
Camera cam = Camera.open();     
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();

上面的方法在棒棒糖上不起作用,因为在棒棒糖中不推荐使用相机。我找不到在棒棒糖中以编程方式打开flash的任何其他方法。我如何才能做到这一点。提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-22 17:31:59

代码语言:javascript
复制
mCam = Camera.open();
Camera.Parameters p = mCam.getParameters();
p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
mCam.setParameters(p);
mPreviewTexture = new SurfaceTexture(0);
try {
   mCam.setPreviewTexture(mPreviewTexture);
} catch (IOException ex) {
   // Ignore
}
mCam.startPreview();

它适用于我的Android 5.0.x。别忘了在清单中添加摄像头使用的权限。

代码语言:javascript
复制
<uses-permission android:name="android.permission.CAMERA" />
票数 7
EN

Stack Overflow用户

发布于 2017-04-06 14:23:01

Camera类现在已弃用。

对于上面的棒棒糖,你需要使用camera2

所以nickkadrov解决方案不适用于6.0及以上的设备,打开/关闭闪光灯的最好方法是尝试下面的代码

代码语言:javascript
复制
public static void toggleFlashLight(){
    toggle=!toggle;
               try {
            CameraManager cameraManager = (CameraManager) getApplicationContext().getSystemService(Context.CAMERA_SERVICE);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                for (String id : cameraManager.getCameraIdList()) {

                    // Turn on the flash if camera has one
                    if (cameraManager.getCameraCharacteristics(id).get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) {
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                            cameraManager.setTorchMode(id, true);
                        }
                    }
                }
            }
        } catch (Exception e2) {
            Toast.makeText(getApplicationContext(), "Torch Failed: " + e2.getMessage(), Toast.LENGTH_SHORT).show();
        }


}

其中toggle是类级别静态布尔变量,其缺省值为false

代码语言:javascript
复制
static boolean toggle=false;
票数 10
EN

Stack Overflow用户

发布于 2015-02-22 19:47:44

你的代码应该可以正常工作。请检查您是否添加了正确使用摄像头的权限:

代码语言:javascript
复制
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT"/>

这应该添加到您的AndroidManifest以上您的其他规格。

此外,还有一个关于不同设备的有趣讨论和一个应该在每个设备上都能工作的示例:Flashlight in Android

如果您不想使用已弃用的API,您可以查看:

Package Summary of Camera2

Camera device specification on the new api

不幸的是,我不能给你一个使用新API的例子,因为我自己还没有用过它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28656028

复制
相关文章

相似问题

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