Flex mobile Camera + Native разширение

Вече зададох този въпрос във форума за предварителни версии на 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 desire S с предна и задна камера. Когато правя поточно предаване от ефирно приложение (използвайки as3 camera = Camera.getCamera()) и се опитвам да използвам това разширение, то изобщо не реагира

Така че намерих заобиколно решение: във флаш промених кода на:

 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 и от другата страна) и става нормално, когато светкавицата е изключена


person Victor Sheyanov    schedule 14.11.2011    source източник


Отговори (2)


Мисля, че това е така, защото все още имате отворена камера в родното разширение. Вие го освобождавате само когато стартирате nativeExtension.turnFlashOn(false)

Ресурсът на камерата може да се държи само от един процес в даден момент. Ето защо замръзва. Подозирам, че ако погледнете системните си регистрационни файлове (logcat), ще видите грешки като „Не може да се свърже с камерата“ Когато светкавицата ви е изключена, сте изпълнили camera.release(), така че не се задържа и AS може да я придобие .

Не съм сигурен какво става в AS, където изисквате предната камера, но използвате задната. Не си много ясен. Така или иначе, не правете това, защото желаният от вас резултат не може да бъде постигнат, тъй като това ще изисква два процеса, които държат ресурса на камерата едновременно.

Защо не правите стрийминг от собственото си разширение? По този начин можете да използвате камерата и светкавицата едновременно и производителността може да е много по-добра, тъй като работи първоначално. Поддръжката на Flex за камера и запис на видео е наистина лоша. Щях да го използвам и в крайна сметка реших да преместя всичките си процеси на камерата в NE.

Надявам се това да помогне

person jln646v    schedule 09.12.2011

Ако вашето устройство има инсталирани 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 камери

person user1982884    schedule 25.02.2013