Acessando a camera do celular com Adobe AIR for Android

O Adobe AIR for Android pode acessar alguns recursos do hardware dos smartphones. Dentre alguns deles podemos citar o acesso a internet, ler o estado do telefone, o acesso da rede, o acesso da wifi, GPS, sensores etc. O Adobe AIR pode acessar também a camera do dispositivo, sendo que isso pode ser feito de duas maneiras.

O Adobe AIR está disponivel para dispositivos rodando Android a partir da versão 2.2(Froyo)

Temos duas classes para acessar a camera com Adobe AIR for Android:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Camera.html
A primeira maneira de acessar a câmera do celular é usando a classe Camera, clássica e já bastante conhecida de nossos trabalhos em ambiente web e desktop. Antes você pode usar o método Camera.isSupported, e para pegar as câmeras usando Camera.getCamera().

Geralmente essa classe é usada também para enviar o streaming de sua câmera para o servidor Flash Media Server(em conjunto com a classe NetStream) e transmitir para web, desktop ou mobile. Veja um exemplo de uso:
[ACTIONSCRIPT3]
var camera:Camera = Camera.getCamera();
if (camera != null)
{
video = new Video(camera.width * 2, camera.height * 2);
video.attachCamera(camera);
addChild(video);
}
else
{
trace(“You need a camera.”);
}
[/ACTIONSCRIPT3]
No getCamera, se não for passado nenhum parâmetro, acessará a camera principal do dispositivo, você pode acessar uma câmera especifica passando o índice dela como string:
[ACTIONSCRIPT3]
var arrCamera:Array = Camera.names;// todas as câmeras como array
var camera:Camera = Câmera.getCamera(“1”);//acessando a câmera de indece 1
[/ACTIONSCRIPT3]

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/CameraUI.html
CameraUI é uma classe nova exclusiva para o Adobe AIR for Mobile Devices, permitindo que você capture a imagem ou vídeo do aplicativo padrão de câmera do celular. A imagem ou video fica disponivel no objeto MediaEvent. Veja um exemplo de uso:
[ACTIONSCRIPT3]
var deviceCameraApp:CameraUI = new CameraUI();
var imageLoader:Loader;

deviceCameraApp.addEventListener( MediaEvent.COMPLETE, imageCaptured );
deviceCameraApp.addEventListener( Event.CANCEL, captureCanceled );
deviceCameraApp.addEventListener( ErrorEvent.ERROR, cameraError );
deviceCameraApp.launch( MediaType.IMAGE );

function imageCaptured( event:MediaEvent ):void
{
trace( “Media captured…” );

var imagePromise:MediaPromise = event.data;

if( imagePromise.isAsync )
{
trace( “Asynchronous media promise.” );
imageLoader = new Loader();
imageLoader.contentLoaderInfo.addEventListener( Event.COMPLETE, asyncImageLoaded );
imageLoader.addEventListener( IOErrorEvent.IO_ERROR, cameraError );

imageLoader.loadFilePromise( imagePromise );
}
else
{
trace( “Synchronous media promise.” );
imageLoader.loadFilePromise( imagePromise );
showMedia( imageLoader );
}
}

function captureCanceled( event:Event ):void
{
trace( “Media capture canceled.” );
NativeApplication.nativeApplication.exit();
}

function asyncImageLoaded( event:Event ):void
{
trace( “Media loaded in memory.” );
showMedia( imageLoader );
}

function showMedia( loader:Loader ):void
{
this.addChild( loader );
}

function cameraError( error:ErrorEvent ):void
{
trace( “Error:” + error.text );
NativeApplication.nativeApplication.exit();
}
[/ACTIONSCRIPT3]

Um ultimo detalhe para que funcione no smartphone, é necessario setar a permissão para que o aplicativo possa acessar a camera no Android. Isso é feito no xml de configuração do Adobe AIR:
[XML]

]]>

[/XML]

4 thoughts on “Acessando a camera do celular com Adobe AIR for Android

  1. Pingback: http://links.soudev.com.br

Leave a Reply