Question

Je développe une application qui prend un aperçu de la caméra de l'appareil et analyse ce flux. Je peux créer l'aperçu de la caméra, mais je n'arrive pas à faire en sorte que la caméra règle automatiquement sa mise au point.

Je sais que le matériel sous-jacent est possible d'effectuer une mise au point automatique, car l'application native de l'appareil photo BlackBerry répond à la touche multimédia "Prendre une photo" en mettant automatiquement au point l'image avant de prendre la photo.

Cependant, je n'essaye pas de prendre une photo, j'essaie de scanner en continu le flux d'entrée pour un code-barres.

Voici mon code:

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);

J'ai testé sur BlackBerry Storm 9500 et Bold 9700 exécutant tous deux OS5.

Était-ce utile?

La solution 2

La seule façon de mettre au point la caméra sous OS5 est d'utiliser VideoControl.getSnapshot ().Il n'y a pas d'autre moyen.

Autres conseils

Essayez ceci

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.");
        }
      }

Cela fonctionne pour moi !!!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top