2012-10-29 84 views
1

需要使用內置設備相機閃光燈作爲手電筒。 不幸的是,我無法訪問Android設備,因此我只能使用Android模擬器。 我如何驗證我的代碼是否有效?Android使用設備閃光燈作爲手電筒

我一直在嘗試多次更新我的應用程序,以不同的方式訪問相機閃光燈,每次應用程序崩潰。

我的應用程序最小OS版本是2.2,

目前我使用下面的代碼


private void turnFlashOn() { 
     camera = Camera.open(); 
     Parameters p = camera.getParameters(); 
     p.setFlashMode(Parameters.FLASH_MODE_TORCH); 
     camera.setParameters(p); 
     camera.startPreview(); 
    } 

    private void turnFlashOff() { 
     camera = Camera.open(); 
     Parameters p = camera.getParameters(); 
     p.setFlashMode(Parameters.FLASH_MODE_OFF); 
     camera.setParameters(p); 
     camera.stopPreview(); 
    } 

沒有測試它。

您使用相機閃光燈的方式是什麼?

謝謝!

+1

我會開始添加一些調試代碼。捕獲/顯示異常等。例如,如果'Camera.open()'返回null,您的代碼將生成一個'NullPointerException'。 –

+0

使用下面的鏈接,你會得到更好的主意。 [請參閱此文件](http://code.google.com/p/torch/source/browse/#svn/trunk/src/com/colinmcdonough/android/torch) –

+0

當您的問題是「爲什麼會崩潰?」你應該*總是*發佈堆棧跟蹤!你沒有描述實際問題。 –

回答

0

您可以在模擬器和模擬相機類(使用jmockit)進行調試,但是您必須小心 - 不是真實設備上的每個相機都支持手電筒模式(或者有閃光燈) - 因此您必須檢查相機對象是否支持這一點。 (提示:如果你有禮貌地問問並在網絡上的某個地方提供簽名的APK,那麼你可以在android開發人員郵件列表上招聘測試人員,這樣人們可以安裝它)

1

這裏的前兩個錯誤是,你有兩次調用Camera.open(),並從不關閉它。您需要在onResume()中打開它,並在onPause()中關閉它,然後在您獲得的Camera句柄之間進行操作。