मुख्य सामग्री पर जाएँ
CrossFly 100% ओपन सोर्सGitHub पर फ़ॉलो करें
CrossFlyCrossFly
शुरू करें

यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।

कैमरा और बारकोड

एक फ़ोटो कैप्चर करना — Camera.shot()

Camera cam = new Camera();
cam.cameraType = Camera.CameraType.PICKER;      // ⚠️ कोई default नहीं — हमेशा परिभाषित करें
cam.captureMode = Camera.Preview.PHOTO;

new Thread(() -> {
   String caminho = cam.shot();                 // फ़ाइल का पथ, या रद्द होने पर null
   if (caminho == null) return;
   Component.onUI(() -> {
      try { imageView.image(new Image(caminho)); Component.repaint(); }
      catch (Exception e) { Debug.log("erro: " + e); }
   });
}).start();

⚠️ click() अब मौजूद नहीं है — कैप्चर का तरीका shot() है (पथ के साथ String लौटाता है या उपयोगकर्ता के रद्द करने पर null)।

कॉन्फ़िगरेशन

फ़ील्ड मान
cameraType DEFAULT (आंतरिक कैमरा) · PICKER (PhotoPicker) · GALLERY (गैलरी) — कोई default नहीं
captureMode Preview.PHOTO · MUTED_VIDEO · AUDIO_VIDEO
videoQuality AVQuality.HIGH/MEDIUM/LOW
resolutionWidth/Height (स्टैटिक) रिज़ॉल्यूशन (हमेशा LANDSCAPE में)

बारकोड पढ़ना — CameraBarcode.readBarcode(Image)

पहले से कैप्चर की गई इमेज से 1D और 2D (QR) पढ़ता है (ZXing के ज़रिए):

Image img = new Image(caminho);
com.google.zxing.Result r = CameraBarcode.readBarcode(img);   // कोड न मिलने पर null
if (r != null) {
   String codigo = r.getText();
   Debug.log("Código: " + codigo);
}

वास्तविक सीमाएँ

  • Camera.shot() नेटिव UI खोलता है — इसे पेंट थ्रेड के बाहर कॉल करें और onUI(...) के साथ लौटें।
  • CameraBarcode.readBarcode थ्रेड-सेफ़ नहीं है — इसे एक साथ कई थ्रेड्स से कॉल न करें।
  • null रिटर्न सामान्य हैं (रद्द किया / कोड नहीं मिला) — हमेशा जाँचें।
  • Mac ARM पर कैप्चर null लौटा सकता है (प्लेटफ़ॉर्म सीमा)।

अच्छी प्रथाएँ

  • हमेशा cameraType परिभाषित करें (कोई default नहीं है)।
  • shot() और readBarcode(...) के null रिटर्न को संभालें।
  • सिर्फ़ गैलरी से चुनने के लिए, PhotoPicker उपयोग करें।

आम गलतियाँ

  • shot() के बजाय click() कॉल करना (मौजूद नहीं है)।
  • cameraType परिभाषित न करना।
  • readBarcode को समवर्ती रूप से कॉल करना (थ्रेड-सेफ़ नहीं है)।

यह भी देखें

क्या यह पृष्ठ उपयोगी था?