![](/img/trans.png)
[英]Using the Camera class with Flex Mobile Framework and Android
[英]Flex mobile Camera + Native extension
我已經在Adobe發行前論壇上問過這個問題,但他們保持沉默,因此我需要您的幫助!
我需要制作一個應用程序,該應用程序應該能夠在向服務器傳輸實時視頻的過程中在Android設備上打開/關閉閃光燈。
所以我做了擴展。 Java函數很簡單:
try{
if (isOn){
camera = Camera.open();
Parameters params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
} else {
camera.release();
}
} catch( Exception e ){
}
我在前后攝像頭上使用了HTC DesireS。 當我從空中應用程序進行流式傳輸(使用as3 camera = Camera.getCamera())並嘗試使用此擴展程序時,它根本不響應
所以我找到了解決方法:在Flash中,我將代碼更改為:
camera = null;
nativeExtension.turnFlashOn(true);
camera = Camera.getCamera("1");
該代碼僅在使用后置攝像頭時有效,但是我需要傳遞參數“ 1”,該參數實際上是前置攝像頭,但是在這種情況下使用后置攝像頭。 無論如何-它工作正常。
但是,當我嘗試僅使用后置攝像頭在HTC上使用此應用程序時,我就卡住了...我無法使用Camera.getCamera(“ 1”),因為我只有“ 0”攝像頭,即后置攝像頭。 因此,當我使用此代碼時:
camera = null;
nativeExtension.turnFlashOn(true);
camera = Camera.getCamera("0");
我的圖像兩面都凍結(Android應用程序和另一面),並且當閃光燈關閉時它恢復正常
我認為這是因為您仍在本機擴展中打開了相機。 您僅在運行nativeExtension.turnFlashOn(false)時將其釋放
攝像機資源一次只能由一個進程保存。 這就是為什么它凍結。 我懷疑如果您查看系統日志(logcat),將會看到諸如“無法連接到相機”之類的錯誤消息。當閃光燈關閉時,您已經運行了camera.release(),因此它沒有被保存,AS可以獲取它。
我不確定您要求前置攝像頭但使用后置攝像頭的AS中發生了什么。 你不是很清楚。 無論哪種方式,都不要這樣做,因為無法實現所需的結果,因為這將需要兩個進程同時保存攝像機資源。
您為什么不從本機擴展中進行流式傳輸? 這樣,您可以同時使用相機和閃光燈,由於它是本地運行的,因此性能可能會更好。 Flex對相機和錄制視頻的支持確實很差。 我打算使用它,最終決定將我所有的攝像頭過程移至NE。
希望這可以幫助
如果您的設備安裝了0、1、2個攝像頭,請嘗試以下邏輯
camera = null;
nativeExtension.turnFlashOn(true);
// get front camera
camera = Camera.getCamera("1");
// if no front cam try back
if (camera == null)
camera = Camera.getCamera("0");
// if no cams try default cam
if (camera == null)
camera = Camera.getCamera();
else {
trace("Mobile device has no camera!");
}
此代碼適用於具有零個,0個或2個凸輪的設備
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.