Pregunta

Estoy desarrollando una aplicación que toma una vista previa de la cámara del dispositivo y analiza esa alimentación. Puedo crear la vista previa de la cámara, pero no puedo lograr que la cámara ajuste su enfoque automáticamente.

Sé que el hardware subyacente es posible realizar un enfoque automático porque la aplicación nativa de la cámara BlackBerry responde a la tecla de medios 'tomar foto' enfocando automáticamente la imagen antes de tomar la foto.

Sin embargo, no estoy tratando de tomar una foto, estoy tratando de escanear continuamente la alimentación de entrada para un código de barras.

Aquí está mi código:

Player _player = Manager.createPlayer("capture://video");
_player.realize();
_player.start();
_vc = (VideoControl) _player.getControl("VideoControl");

//this is added to the screen
_viewFinder = (Field) _vc.initDisplayMode(
    VideoControl.USE_GUI_PRIMITIVE, "net.rim.device.api.ui.Field");

FocusControl focusControl = (FocusControl) _player.getControl("javax.microedition.amms.control.camera.FocusControl");

//this has no effect
focusControl.setFocus(FocusControl.AUTO);

He probado en BlackBerry Storm 9500 y Bold 9700 que ejecutan OS5.

¿Fue útil?

Solución 2

La única forma de enfocar la cámara en OS5 es usar videocontrol.getSnapShot (). No hay otra manera.

Otros consejos

Prueba esto

this.player = Manager.createPlayer("capture://video");
this.player.realize();
this.videoControl = ((VideoControl)this.player.getControl("VideoControl"));
this.field = ((Field)this.videoControl.initDisplayMode(0, "net.rim.device.api.ui.Field"));
this.videoControl.setVisible(true); 
this.player.start();
try {
        //get focuscontrol
      FocusControl focusControl = (FocusControl)getCurrentObject().player.getControl("javax.microedition.amms.control.camera.FocusControl");
      if (focusControl == null) {
          //no focus control
        Log.Debug("Focus control not available.");
      } else {
        if (focusControl.isMacroSupported()) {
            //setting macro
          Log.Debug("Setting macro mode.");
          focusControl.setMacro(true);
        } else {
            //no macro
          Log.Debug("Macro mode not supported.");
        }
        if (focusControl.isAutoFocusSupported()) {
            //setting autofocus
          Log.Debug("Using autofocus.");
          focusControl.setFocus(-1000);
        } else {
            //no autofocus
          Log.Debug("Autofocus not supported.");
        }
      }

Esto funciona para mi !!!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top