Para haer que un dialogo se despliegue necesitamos hacer el siguiente código:
//crea ventana
var win = Titanium.UI.currentWindow;
//creamos un dialogo con las siguientes opciones para obtener una imagen segun la opcion elegida
var dialogo = Titanium.UI.createOptionDialog({
title:'Elige la fuente de la imagen ',
options: ['Camara','Galeria','Cancelar'],
cancel:2 //Esto es para eligir cual sera la opcion cancelar
//Donde comenzamos de 0 como por ejemplo tenemos cancelar
// 0 Camara, 1 Galeria y 2 Cancelar
});
//agregamos el evento
dialogo.addEventListener('click',function(e){
Ti.API.info('Seleccionaste'+e.index);
});
//boton para eligir foto
var eligirFoto = Titanium.UI.createButton({
title: 'Elige',
top: 20,
right: 20
});
eligirFoto.addEventListener('click',function(e){
dialogo.show();//muestra dialogo
});
win.add(eligirFoto);
Y obtendremos esto:
Dicho dialogo es desplegado después de haber dado click en el botón.Ahora que ya tenemos este dialogo haremos lo funcional, osea que haremos que tome primero la cámara del telefono y después que tome de la galería.A continuación veremos como tomarlo del teléfono.
//agregamos el evento
dialogo.addEventListener('click',function(e){
Ti.API.info('Seleccionaste'+e.index);
//Si eligio Camara
if(e.index== 0 )
{
//Desde nuestra camara
Titanium.Media.showCamera({
success:function(event)
{
//Guarda imagen en esta varible
var imagen = event.media;
if(event.mediaType == Ti.Media.MEDIA_TYPE_PHOTO)
{
//coloca la imagen como una vista
var imagenView = Titanium.UI.createImageView({
top:20,
left:20,
width: 280,
height: 320
});
imagenView.image=imagen;
win.add(imagenView);
}
},
cancel:function()
{
//Ha sido cancelado, la opcion de tomar imagen desde la camara
},
error:function(error)
{
//crea una alerta
var alerta = Titanium.UI.createAlertDialog({
title:'Camara'
});
//Daremos aviso si no tuvo camara o si realmente es otra cosa
if(error.code == Titanium.Media.NO_CAMERA)
{
alerta.setMessage('El dispositivo tiene camara disponible');
}else{
alerta.setMessage('Error desconosido');
}
//nos muestra la alerta
alerta.show();
},
//permitimos que nuestro dispositivo edite la imagen
allowImageEditing:true,
//permitimos a nuestro dispositivo que guarde la imagen en la galeria
saveToPhotoGallery:true
});
}else{
//canelado
}
});
Y que obtendremos será un evento en el cual guarda la imágen capturada con el dispositivo, en caso de no tener cámara alguna nos mostrará una alerta diciendonós si el dispositivo no tiene cámara o si fue otro error.Ahora veremos como tomar imágenes desde una galería de fotos:
if(e.index == 1){
//obtiene una imagen de la galeria de fotos del telefono
Titanium.Media.openPhotoGallery({
//Si se cumple
success:function(event){
//guarda imagen en variable
var imagen= event.media
//Lo coloca como una vista
if(event.mediaType == Ti.Media.MEDIA_TYPE_PHOTO){
var imagenVista = Titanium.UI.createImageView({
top:20,
left:20,
width: 280,
height: 320
});
imagenVista.image=imagen;
win.add(imagenVista);
}
},
//Si no cumple cancela
cancel:function(){
//El usuario cancelo la opcion
}
});
}else{
//cancelado
}
Con esto podremos tomar imágenes desde nuestra galería del dispositivo ó desde la cámara del mismo.


5 pts lab móviles
ResponderEliminarY si la quiero enviar, es decir capturar la imagen y agregarle un texto para enviarla.
ResponderEliminar¿Te refieres a ponerle sobre la misma imagen un texto?, si es así este es una manera de hacerlo http://stackoverflow.com/questions/7866869/titanium-appcelerator-manipulate-image-with-additional-text-and-other-images, existen también otras formas pero ya es cuestión de que investigues.
EliminarEn caso de que no te respondí a tu pregunta, necesitaré que seas más específico.