我想寫一個需要LED閃光燈進入火炬模式的應用程序。問題是,Android 2.1不支持這種模式,因此我現在還不能支持這個平臺。這不是一個問題,但我寫給我的未婚夫,她的Epic 4G現在只有2.1。我發現一些代碼示例使用一些未公開的API調用,因此適用於Motorola Droid等,但它們不適用於Epic。有沒有人有一些建議,在哪裏尋找代碼,應該幫助我得到這個工作?Camera.Parameters.FLASH_MODE_TORCH替換爲Android 2.1
7
A
回答
9
我發現火炬模式一般在2.1上工作正常,但我有與三星史詩一樣的問題,並發現它周圍的黑客。在三星Epic上運行時,我注意到它聲稱支持的閃存模式是:flash-mode-values = off,on,auto;
火炬模式未列出,意味着它不被支持。
但是,我發現這個模型仍然會接受該模式,並且會打開LED!壞消息是,當稍後將閃光燈模式設置回自動或離開時,LED仍然亮着!它不會關閉,直到你調用Camera.release()。
我想這就是爲什麼三星不把它列入支持的列表!?!
所以......我用一個CameraHelper類是切換火炬的方法...
/***
* Attempts to set camera flash torch/flashlight mode on/off
* @param isOn true = on, false = off
* @return boolean whether or not we were able to set it
*/
public boolean setFlashlight(boolean isOn)
{
if (mCamera == null)
{
return false;
}
Camera.Parameters params = mCamera.getParameters();
String value;
if (isOn) // we are being ask to turn it on
{
value = Camera.Parameters.FLASH_MODE_TORCH;
}
else // we are being asked to turn it off
{
value = Camera.Parameters.FLASH_MODE_AUTO;
}
try{
params.setFlashMode(value);
mCamera.setParameters(params);
String nowMode = mCamera.getParameters().getFlashMode();
if (isOn && nowMode.equals(Camera.Parameters.FLASH_MODE_TORCH))
{
return true;
}
if (! isOn && nowMode.equals(Camera.Parameters.FLASH_MODE_AUTO))
{
return true;
}
return false;
}
catch (Exception ex)
{
MyLog.e(mLOG_TAG, this.getClass().getSimpleName() + " error setting flash mode to: "+ value + " " + ex.toString());
}
}
使用該叫它如下活動...
private void toggleFlashLight()
{
mIsFlashlightOn = ! mIsFlashlightOn;
/**
* hack to fix an issue where the Samsung Galaxy will turn torch on,
* even though it says it doesnt support torch mode,
* but then will NOT turn it off via this param.
*/
if (! mIsFlashlightOn && Build.MANUFACTURER.equalsIgnoreCase("Samsung"))
{
this.releaseCameraResources();
this.initCamera();
}
else
{
boolean result = mCamHelper.setFlashlight(mIsFlashlightOn);
if (! result)
{
alertFlashlightNotSupported();
}
}
}
的使它在ReleaseCameraResources()中工作的魔法是它調用Camera.release()....然後我必須重新初始化我所有的三星設備的相機內容。
不漂亮,但似乎是爲很多用戶工作。
請注意,我確實有一個火炬模式的報告,在Nexus上的這段代碼中根本不起作用,但能夠深入研究。它絕對適用於HTC EVO和三星史詩。
希望這會有所幫助。
2
在我的情況下三星設備,我需要對焦模式設定爲無窮大,並開始工作
params.setFocusMode(Camera.Parameters.FOCUS_MODE_INFINITY);
mCamera.setParameters(params);
mCamera.startPreview();
+0
非常感謝提示:)我有一個問題,閃光燈不工作在與焦點模式「自動」的Galaxy S 5,將其設置爲「無限」做的訣竅:P – Kervala 2015-06-10 19:00:53
相關問題
- 1. JavaFX 2.1替換tableview數據
- 2. getExternalFilesDir替代的Android 2.1的
- 3. android ListView替換爲ScrollView
- 4. 替換爲Android上的MenuCompat.setShowAsAction()
- 5. 從Android 2.2更改爲2.1
- 6. Android javax.naming。*替換?
- 7. Android - 片段替換未被替換
- 8. Android 2.1 vs 2.2
- 9. imageview android 2.1
- 10. 過Android Studio 2.1
- 11. Android片段替換爲Tab導航
- 12. Android int在eclipse中替換爲android.R.integer
- 13. IntelliJ/Android Studio - 全部替換爲重構
- 14. 問題與%0A替換爲android
- 15. Android API <10替換爲getType方法
- 16. Android:替換爲缺少安全架構
- 17. OrientDB中替代getVertexByKey 2.1
- 18. 1.6至2.1 CameraInfo的替代?
- 19. 空值替換android
- 20. Android初始替換
- 21. Android替換...與…
- 22. 將Joda 1.6.2 DateTime轉換爲2.1 DateTime
- 23. Android 2.1重力感應器(TYPE_GRAVITY)2.1
- 24. 替換爲document.all.sort.length
- 25. 替換爲#
- 26. 替換爲gnome.help_display()
- 27. Javascript替換爲
- 28. 替換爲autocomplete_light.modelform_factory()
- 29. 將「\」替換爲「」
- 30. 替換爲TSql
不知道如果我做錯了什麼,但我得到一個強制關閉時,我嘗試調試它。 – smccloud 2010-10-20 15:37:00
沒有冒犯,但在手機制造商的基礎功能不是理想的方式去。誰知道三星手機在半年或更長時間內的功能? – ajacian81 2011-08-21 21:03:22
我已經使用你的代碼。但相機閃光燈在幾秒鐘後自動關閉。我測試了三星galaxy ace 2.2.1中的代碼..可能是什麼原因呢? – 2011-09-09 12:12:49