频闪灯为Android

时间:2013-01-07 09:27:00

标签: android timer runnable

我搜索了stackoverflow并使用了使用Handler和postDelayed消息打开并关闭灯光的算法。

算法运行得很好......这就是我所做的:

if(mActive)//control the runnable thread
    {
        if(mSwap)//toggler for strobe
        {
            //Turn Flash On
            cam = Camera.open();
            Parameters p = cam.getParameters();
            p.setFlashMode(Parameters.FLASH_MODE_TORCH);
            cam.setParameters(p);
            cam.startPreview();
            mSwap = false;
            mHandler.postDelayed(mRunnable, 1);
        }
        else
        {
            //Turn Flash Off

            cam.stopPreview();
            cam.release();
            cam = null;
            mSwap = true;
            mHandler.postDelayed(mRunnable, 1);


        }
    }

但我无法增加切换以匹配市场上那些应用的频闪频率......

我可以使用其他逻辑(而不是排队消息)吗? 使用计时器会产生更好的结果吗?

由于

1 个答案:

答案 0 :(得分:1)

在您的代码中,每次打开/关闭手电筒时,您都会分配和取消分配Camera对象。每次都需要相当长的时间。

要修复此问题,请将分配/取消分配移至onStartonStop方法,并仅执行最低限度以打开和关闭灯光。

相关问题