A través de los servicios broker.media.*, se tiene acceso a funciones relacionadas con la cámara y la galería de imagenes del dispositivo.

METODOS PUBLICOS

Bool broker.media.hasCamera()

Retorna true si el dispositivo tiene cámara, false en caso contrario.

Retorna  
Bool Retorna true si el dispositivo tiene cámara, false en caso contrario.

Bool broker.media.hasCameraAccess()

Retorna true si el dispositivo tiene acceso a la cámara, false en caso contrario. La primera vez que se ejecuta este método pregunta por permisos al usuario.

Retorna  
Bool Retorna true si el dispositivo tiene acceso a la cámara, false en caso contrario.

Bool broker.media.hasGalleryAccess()

Retorna true si tiene acceso a la galería de imágenes del dispositivo, false en caso contrario. La primera vez que se ejecuta este método pregunta por permisos al usuario.

Retorna  
Bool Retorna true si el dispositivo tiene acceso a la galería, false en caso contrario.


MediaFile broker.media.open(MediaCameraConfigure camaraConf)

Abre la cámara con las opciones configuradas en el argumento (Ver MediaCameraConfigure). Al sacar una foto o grabar un video, lo retorna en un MediaFile.

Parámetros  
camaraConf MediaCameraConfigure: configuración de la cámara.
Retorna  
MediaFile Retorna un MediaFile con la foto o el video capturado.
Excepciones  
DeviceWithoutCamera – The device has no camera. El dispositivo no tiene cámara.
CameraAccessDenied – Error trying to access camera without permission. Error acceciendo a la cámara sin permisos.

MediaFile broker.media.open(MediaGalleryConfigure galeriaConf)

Abre la galería de imágenes con las opciones configuradas en el argumento (ver MediaGalleryConfigure). Al seleccionar una foto o video, lo retorna en un MediaFile.

Parámetros  
galeriaConf MediaGalleryConfigure: configuración de la galería.
Retorna  
MediaFile Retorna un MediaFile con la foto o el video seleccionado.
Excepciones  
GalleryAccessDenied – Error trying to access media gallery without permission. Error acceciendo a la galería sin permisos.


void broker.media.removeTemporaryFiles()

Remueve todos los archivos temporales que fueron creados por getURL(), en caso de no existir archivos nada sucede.

Excepciones  
RemoveTemporaryFilesException – Has been an exception when trying to remove temporary media files. En caso de que existan archivos y no se puedan borrar por algun problema en el borrado se lanza esta excepción: Ha habido una excepción tratando de borrar archivos temporales.

Ejemplo:

Experience Main {
    String name label("Main name")
    String imagen as Image
    Decision rule1 action("MainContext.abrirCamara")   label("Abrir cámara")
    Decision rule2 action("MainContext.abrirGaleria")  label("Abrir galería")
}

RuleContext MainContext {

  Rule abrirCamara {

    if(broker.media.hasCameraAccess()) {

      MediaCameraConfigure mcc = MediaCameraConfigure()
      mcc.setOnlyPhotosMode()
      //abre la cámara de fotos
      MediaFile file = broker.media.open(mcc)
      if (file != null) {
      	imagen = file.getURL()
      } else {
      	//usuario ha cancelado la acción
      }
    }
  }

  Rule abrirGaleria {

    if(broker.media.hasGalleryAccess()) {

        MediaGalleryConfigure mgc = MediaGalleryConfigure()
        mgc.setOnlyPhotosGalleryMode()
        //abre la galería de imagenes
        MediaFile file = broker.media.open(mgc)
	if (file != null) {
	  imagen = file.getURL()
       	} else {
  	  //usuario ha cancelado la acción
        }
    }
  }

}