Est-il possible de mettre au point la caméra à l'aide de l'API BlackBerry OS5?
-
28-10-2019 - |
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.
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 !!!