2010-11-23 10 views
6

Soy nuevo en el desarrollo de aplicaciones BlackBerry e intento hacer una aplicación simple para encender mi flash como una antorcha. Sé que ya hay varias aplicaciones que hacen esto, pero me gustaría intentarlo por mi cuenta.Activar Flash como Luz en Blackberry

He instalado eclipse y todo lo necesario para ejecutar mi entorno de desarrollo. También he creado con éxito la aplicación estándar estándar hello world.

Sin embargo, estoy luchando por saber cómo hacerlo. He estado leyendo la documentación de la API y comencé a jugar con FlashControl, VideoControl y SnapshotControl.
Sin embargo, estos no parecen exponer los métodos para hacer esto.

Sé a través de la cámara de video que puedo ir a las opciones y encender la luz del flash y esto es exactamente lo que estoy tratando de imitar.

El código que he utilizado hasta ahora que parece que acaba de establecer el flash de la cámara para forzar el es:

Player p = javax.microedition.media.Manager.createPlayer("capture://video"); 
p.realize(); 
p.start(); 

FlashControl flashControl = (FlashControl) p.getControl("javax.microedition.amms.control.camera.FlashControl"); 
flashControl.setMode(FlashControl.FORCE); 

Respuesta

0

intentar algo como esto

LED.setState(LED.STATE_ON);  // for LED 
Backlight.enable(true);   // for Screen 
this.setMode(FlashControl.ON); // for flash light. 

o bien importar este paquete

package lsphone.flash.microfireps; 
3

el problema relacionado con el control del flash ha sido resuelto por mí

según estoy usando el control del flash en mi aplicación reciente en

cámara.

Este es el código que he utilizado:

public Camera(int j) 
{ 
    k = j; 
    try 
    { 
     Player player = Manager.createPlayer("capture://video"); 
     player.realize(); 

     _videoControl = (VideoControl) player.getControl("VideoControl"); 
     flashControl = new FlashControl() 
     { 
      public void setMode(int mode) 
      { 
       // TODO Auto-generated method stub 
      } 

      public boolean isFlashReady() 
      { 
       // TODO Auto-generated method stub 
       return false; 
      } 

      public int[] getSupportedModes() 
      { 
       // TODO Auto-generated method stub 
       return null; 
      } 

      public int getMode() 
      { 
       // TODO Auto-generated method stub 
       return 0; 
      } 
     }; 
     flashControl = (FlashControl) player 
       .getControl("javax.microedition.amms.control.camera.FlashControl"); 

     try { 

      if (k == 1) 
      { 
       flashControl.setMode(FlashControl.AUTO); 
       Dialog.alert("slect Auto"); 
      } 
      else if (k == 2) 
      { 
       flashControl.setMode(FlashControl.OFF); 
       Dialog.alert("slect No"); 
      } 
     } 
     catch (Exception e) 
     { 
      System.out.println(e); 
     } 

     if (_videoControl != null) 
     { 
      _videoField = (Field) _videoControl.initDisplayMode(
        VideoControl.USE_GUI_PRIMITIVE, 
        "net.rim.device.api.ui.Field"); 

      // _videoControl.setDisplaySize(330, 420); 
      // _videoControl.setDisplayLocation(getContentWidth(), 
      // getContentHeight()); 

      _videoControl.setVisible(true); 

      add(_videoField); 

      capture = new ButtonField("Capture", Field.FIELD_HCENTER); 
      capture.setChangeListener(this); 

      add(capture); 
      player.start(); 

     } 
    } 
    catch (Exception e) 
    { 
     System.out.println(e); 
    } 
} 

esta lógica se ha implementado simultáneamente con Pinkesh como mi compañera

en el comapny

+0

¿podría proporcionar el código completo de la clase 'Camera'? – CAMOBAP

+0

y obtengo +50 para la mejora de la respuesta – CAMOBAP

+2

¿Por qué inicializa 'flashControl' con un objeto ficticio? –

1

La clase FlashControl, disponible en OS 5.0 permite usted para encender el flash. Sólo hay que establecer un control del flash en el reproductor con el indicador de fuerza:

FlashControl flash = (FlashControl)player.getControl("javax.microedition.amms.control.camera.FlashControl"); 
if(flash!=null) { 
    try { 
     flash.setMode(FlashControl.FORCE); 
    } catch(IllegalArgumentException iae){}   
} 

Para que esto funcione, es probable que necesite para abrir un reproductor para grabar vídeo o tomar una foto. No estoy mostrando eso en mi código por razones de brevedad, pero here puede leer un tutorial. Si su aplicación solo trata de encender el flash, probablemente le gustaría tener el campo de video oculto.

+0

¿Puedo llamar 'flash.setMode (FlashControl.FORCE)' cuando el jugador ya ha comenzado (me refiero a 'Player.start()' ya llamado)? – CAMOBAP

+1

Sí (solo revisé un proyecto de prueba que hice hace un tiempo). –

+0

Muchas gracias !!!! – CAMOBAP