1

我在 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);


        }
    }

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

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

谢谢

4

1 回答 1

1

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

要解决此问题,请将分配/解除分配移动到onStartandonStop方法,并且只做最少的操作来打开和关闭灯。

于 2013-01-07T10:09:28.010 回答