Creando una aplicación de fotografía para Android con Adobe AIR – Part 1/2
En esta entrada les explicare como crear una aplicación para tomar fotografias y guardarlas en en carrete de fotos de tu celular o tableta Android. Una alternativa para desarrollar aplicaciones “nativas” es Adobe Air, que es como una maquina virtual que se encargara de hacer corre nuestra aplicación en el dispositivo. Esta aplicación la podriamos crear con Adobre Flash o Adobe Flash Builder. Aqui les mostrare como crearla con Adobe Flash CS 6 Nuestra aplicación nos permitirá tomar fotos y enmarcarlas en un cartel tipo el viejo oeste como el de la figura 2 1- Creamos un proyecto nuevo de Android 2- Creamos una Clase que puede llamarse por ejemplo Main asociada al proyecto, la cual contendra toda la logica de la aplicación. 3- Creamos los elementos gráficos que necesitamos los cuales son:- Botón para tomar la foto
- Botón para cambiar la cámara
- Botón para rotar la imagen de la cámara
- Fondo del cartel.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
package { import flash.display.MovieClip; import flash.events.Event; import flash.events.TimerEvent; import flash.utils.Timer; import flash.media.Video; import flash.media.Camera; import flash.display.BitmapData; import flash.media.Video; import flash.media.Camera; public class main extends MovieClip { var cameraRoll:CameraRoll; var bmp:BitmapData; var video : Video; var webcam : Camera; var VIDEO_WIDTH : Number =289; //Se coloca de 100 a 1000 para definir en ancho del video var VIDEO_HEIGHT : Number = 289; //Se coloca de 100 to 1000 para definir el alto del video var WEB_CAMERA_WIDTH : Number = VIDEO_WIDTH/2; //Smaller than video runs faster var WEB_CAMERA_HEIGHT : Number = VIDEO_HEIGHT/2; //Smaller than video runs faster var VIDEO_FRAME_RATE : Number = 30; //Set 5 to 30. Higher values = smoother video var DETECTION_THRESHOLD : uint = 80; //Set 50 to 100. Set to detect marker more accurately. var DETECTION_CONFIDENCE : Number = 0.5; //Set 0.1 to 1. Set to detect marker more accurately. var MODEL_SCALE : Number = 0.0175; //Set 0.01 to 5. Set higher to enlarge model var temporizador:Timer; var camaraactual:String="0"; var firsttime:Boolean=false; public function main() { } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
package { import flash.display.MovieClip; import flash.events.Event; import flash.events.TimerEvent; import flash.utils.Timer; import flash.media.Video; import flash.media.Camera; import flash.display.BitmapData; import flash.media.Video; import flash.media.Camera; import flash.events.MouseEvent; public class main extends MovieClip { var cameraRoll:CameraRoll; var bmp:BitmapData; var video : Video; var webcam : Camera; var VIDEO_WIDTH : Number =289; //Se coloca de 100 a 1000 para definir en ancho del video var VIDEO_HEIGHT : Number = 289; //Se coloca de 100 to 1000 para definir el alto del video var WEB_CAMERA_WIDTH : Number = VIDEO_WIDTH/2; //Smaller than video runs faster var WEB_CAMERA_HEIGHT : Number = VIDEO_HEIGHT/2; //Smaller than video runs faster var VIDEO_FRAME_RATE : Number = 30; //Set 5 to 30. Higher values = smoother video var DETECTION_THRESHOLD : uint = 80; //Set 50 to 100. Set to detect marker more accurately. var DETECTION_CONFIDENCE : Number = 0.5; //Set 0.1 to 1. Set to detect marker more accurately. var MODEL_SCALE : Number = 0.0175; //Set 0.01 to 5. Set higher to enlarge model var temporizador:Timer; var camaraactual:String="0"; var firsttime:Boolean=false; public function main() { //Constructor this.btnCapture.addEventListener(MouseEvent.CLICK,saveToCameraRoll); stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey); btnrotar.addEventListener(MouseEvent.CLICK,rotarcamara); bg.txtnombre.addEventListener(MouseEvent.CLICK,quitartexto); //Si tiene varias camara activar boton de cambio if(Camera.names.length>1){ camaraactual="1"; prepareWebCam(camaraactual); btnchange.addEventListener(MouseEvent.CLICK,cambiarcamara); }else{ //Si solo tiene una camara quitar el boton de cambio de cámara removeChild(btnchange); prepareWebCam(camaraactual); } } private function quitartexto(eve:MouseEvent):void{ } private function saveToCameraRoll(e:MouseEvent):void { } private function prepareWebCam(cam_n:String) : void { } private function rotarcamara(eve:MouseEvent){ } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
function prepareWebCam(cam_n:String) : void { video = new Video(VIDEO_WIDTH, VIDEO_HEIGHT); webcam = Camera.getCamera(cam_n); webcam.setMode(WEB_CAMERA_WIDTH, WEB_CAMERA_HEIGHT, VIDEO_FRAME_RATE); webcam.addEventListener(ActivityEvent.ACTIVITY, camera_activity); video.attachCamera(webcam); video.x=video.x-video.width/2; video.y=video.y-video.height/2; bg.vdcont.addChild(video); if(!firsttime){ firsttime=true; bg.vdcont.rotation-=90; } } function camera_activity(evt:ActivityEvent):void { trace(evt.type.toString()+","+evt.activating.toString()); } |
Etiquetas:adobe air, android, flash
"Trackback" Enlace desde tu web.