Esta página fue traducida automáticamente del portugués y puede contener errores. La versión en portugués es la canónica.
Cámara y código de barras
Capturar una foto — Camera.shot()
Camera cam = new Camera();
cam.cameraType = Camera.CameraType.PICKER; // ⚠️ sin default — siempre defínelo
cam.captureMode = Camera.Preview.PHOTO;
new Thread(() -> {
String caminho = cam.shot(); // ruta del archivo, o null si se canceló
if (caminho == null) return;
Component.onUI(() -> {
try { imageView.image(new Image(caminho)); Component.repaint(); }
catch (Exception e) { Debug.log("erro: " + e); }
});
}).start();
⚠️
click()ya no existe — el método de captura esshot()(retorna unStringcon la ruta onullsi el usuario cancela).
Configuración
| Campo | Valores |
|---|---|
cameraType |
DEFAULT (cámara interna) · PICKER (PhotoPicker) · GALLERY (galería) — sin default |
captureMode |
Preview.PHOTO · MUTED_VIDEO · AUDIO_VIDEO |
videoQuality |
AVQuality.HIGH/MEDIUM/LOW |
resolutionWidth/Height (estáticos) |
resolución (siempre en LANDSCAPE) |
Leer código de barras — CameraBarcode.readBarcode(Image)
Lee 1D y 2D (QR) de una imagen ya capturada (vía ZXing):
Image img = new Image(caminho);
com.google.zxing.Result r = CameraBarcode.readBarcode(img); // null si no encontró código
if (r != null) {
String codigo = r.getText();
Debug.log("Código: " + codigo);
}
Limitaciones reales
Camera.shot()abre UI nativa — llámalo fuera del paint thread y vuelve cononUI(...).CameraBarcode.readBarcodeNO es thread-safe — no lo llames desde varios hilos a la vez.- Los retornos
nullson normales (canceló / no encontró código) — comprueba siempre. - En Mac ARM la captura puede retornar
null(limitación de plataforma).
Buenas prácticas
- Siempre define
cameraType(no hay default). - Trata el retorno
nulldeshot()y dereadBarcode(...). - Para solo elegir de la galería, usa el PhotoPicker.
Errores comunes
- Llamar a
click()(no existe) en vez deshot(). - No definir
cameraType. - Llamar a
readBarcodede forma concurrente (no es thread-safe).
Véase también
¿Te resultó útil esta página?¡Gracias por tu opinión!