簡體   English   中英

Flex移動相機+本機擴展

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM