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

1     <SurfaceView 
2         android:id="@+id/test"
3         android:layout_width="wrap_content"
4         android:layout_height="wrap_content"/>

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

        surfaceview = (SurfaceView) findViewById(R.id.test);        
     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);
        try {
            mCamera.setPreviewDisplay(this.holder);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    

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


posted on 2014-02-19 09:34  怒吃三两饭  阅读(630)  评论(0编辑  收藏  举报

导航