2013-01-07 268 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方法,並且只做最低限度的打開和關閉指示燈。