2013-01-07 232 views
1

我已经在stackoverflow上搜索并使用使用处理程序和postDelayed消息打开和关闭灯的算法。闪光灯为Android

的算法中运行完美....这里是我做过什么:

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


     } 
    } 

,但我不能增加开关来匹配那些在市场上的应用程序的频闪......

有没有其他逻辑可以使用(而不是排队消息)? 使用定时器会给出更好的结果吗?

感谢

+0

你试过一个计时器吗?另外,为什么使用相机预览?所有的开放和关闭似乎都有点过分。地狱,你甚至一直在分配一个新的'Camera'对象。 –

+0

是的,我怀疑...重新分配可能需要时间...我可以使用其他相机预览?我只有一次分配相机时遇到问题...它不能执行cam.release后凸轮= Camera.open ...我的凸轮是全球 –

+0

也许这:http://stackoverflow.com/questions/8163012/how-使用相机闪光灯作为火炬可以帮助你。 –

回答

1

在你的代码的分配和释放每次打开/关闭您的火炬时间Camera对象。这每次都需要很长时间。

要解决此问题,请将分配/取消分配移至onStartonStop方法,并且只做最低限度的打开和关闭指示灯。