Можно ли сфокусировать камеру с помощью BlackBerry OS5 API?
Я разрабатываю приложение, которое делает предварительный просмотр камеры устройства и анализирует этот канал. Я могу создать предварительный просмотр камеры, но не могу автоматически настроить ее фокус.
Я знаю, что базовое оборудование может выполнять автофокусировку, потому что собственное приложение камеры 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 ответа
Единственный способ сфокусировать камеру в OS5 - использовать VideoControl.getSnapshot(). Другого пути нет.
Попробуй это
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.");
}
}
Меня устраивает!!!