Android4.4 如何控制闪光灯

        最近刚开始学习Android应用开发,最近突然想写一个简洁的手电筒程序自用,通过网上的示例让我很轻松的写出了一个简单的小程序,只有简单的开关闪光灯的功能,通过Camera控制的闪光灯,相信大家都可以很容易的在网上看到相关代码,这里就不进行赘述了。如果你碰到了在4.4的手机上无法开启闪光灯的问题,那这篇文章或许可以帮助你。如果不会通过Camera控制的闪光灯,可以去下面链接看一下这里

        我把程序部署到我4.4的手机上时,发现无法打开闪光灯,检查了程序后,没有发现错误。于是换了一台4.2的手机,可以正常使用开关闪光灯的功能。试图在网上找寻答案,结果没有成功。于是我就去看Google文档。

        在Camera类下,我看到了一条有用的信息:

        Important: Pass a fully initialized SurfaceHolder to setPreviewDisplay(SurfaceHolder). Without a surface, the camera will be unable to start the preview.

        网上提供的方法中没有进行设置SurfaceHolder,会不会是这个原因呢?

        于是我在布局文件中加入了一个SurfaceView

Android4.4 如何控制闪光灯
1     <SurfaceView 
2         android:id="@+id/test"
3         android:layout_width="wrap_content"
4         android:layout_height="wrap_content"/>
Android4.4 如何控制闪光灯

        在代码中的相关位置加入相关代码

Android4.4 如何控制闪光灯
        ViewGroup.LayoutParams localLayoutParams =      surfaceview.getLayoutParams();
        localLayoutParams.width = 1;
        localLayoutParams.height = 1;
        surfaceview.setLayoutParams(localLayoutParams);
        surfaceview.setZOrderOnTop(true);
        surfaceview.setBackgroundColor(-2);
        holder = surfaceview.getHolder();
        holder.addCallback(this);
        holder.setFormat(-2);
Android4.4 如何控制闪光灯
Android4.4 如何控制闪光灯
        try {
            mCamera.setPreviewDisplay(this.holder);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
Android4.4 如何控制闪光灯

    

        重新部署后,发现成功开启了闪光灯。顺利解决了这个小问题。


Android4.4 如何控制闪光灯

上一篇:Android 界面设计 java.lang.NullPointerException 异常的解决方法


下一篇:Android Intent 总结