Можно ли сфокусировать камеру с помощью BlackBerry OS5 API? - PullRequest
1 голос
/ 06 декабря 2011

Я занимаюсь разработкой приложения, которое делает предварительный просмотр камеры устройства и анализирует этот канал.Я могу создать предварительный просмотр камеры, но не могу заставить камеру автоматически регулировать ее фокус.

Я знаю, что базовое оборудование может выполнять автофокусировку, потому что собственное приложение камеры BlackBerry реагирует на мультимедийную клавишу «сфотографировать», автоматически фокусируя изображение перед съемкой.

Однако я не пытаюсь сделать фотографию, я пытаюсь непрерывно сканировать входной канал на предмет штрих-кода.

Вот мой код:

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

Я тестировал на BlackBerry Storm 9500 и Bold 9700, работающих под управлением OS5.

Ответы [ 2 ]

2 голосов
/ 06 декабря 2011

Попробуйте это

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

Это работает для меня !!!

1 голос
/ 13 декабря 2011

Единственный способ сфокусировать камеру в OS5 - использовать VideoControl.getSnapshot ().Другого пути нет.

...