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

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

BarcodePicker

BarcodePicker लाइव कैमरा फ्रेम से बारकोड/QR कोड पढ़ता है, फ़ॉर्मेट के आधार पर फ़िल्टर करते हुए। यह एक अमूर्त वर्ग है: उपभोक्ता onBarcode(BarcodeFormat format, String code) को कार्यान्वित करता है। यह पिकर पैटर्न का अनुसरण करता है (देखें Picker) — पढ़े गए पेलोड को getAnswer() के माध्यम से लौटाता है।

🔴 · पैकेज: dev.crossfly.ui.picker · विस्तार करता है: Picker implements GdxCamera.Listener (अमूर्त) · हार्डवेयर: कैमरा

ℹ️ यह BarcodePicker कैमरा द्वारा रीडिंग है और मौजूद रहता है। इसे बारकोड जनरेशन की पुरानी यूटिलिटी (util/barcode) के साथ भ्रमित न करें, जो आधुनिकीकरण में हटा दी गई थी।

कब उपयोग करें

  • बारकोड (उत्पाद, टिकट) या QR कोड स्कैन करना।

कब उपयोग न करें

  • फ़ोटो लेना/वीडियो रिकॉर्ड करना → PhotoPicker का उपयोग करें।

दिखावट

पूर्ण-स्क्रीन कैमरा प्रीव्यू (काली पृष्ठभूमि), ऊपर शीर्षक, केंद्र में लक्ष्य के लिए एक लाल क्रॉसहेयर और नीचे-दाएँ कोने में बंद करने के लिए एक सफ़ेद “X”।

संपूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)

BarcodePicker अमूर्त है: इसे एक ऐसे बॉडी के साथ इंस्टेंशिएट करें जो onBarcode कार्यान्वित करे। चूँकि यह एक कैमरा ओवरले है, इसे किसी Button से ट्रिगर करें। यह उदाहरण बुनियादी उपयोग को पुनः उपयोग करता है (1D फ़ॉर्मेट, पहली रीडिंग पर बंद होता है) और पेलोड को एक Label में लिखता है। BarcodeFormat com.google.zxing से आता है।

package com.exemplo;

import com.google.zxing.BarcodeFormat;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.picker.*;

/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());

      Label saida = new Label("Nenhum código lido");
      add(LAY_AUTO, saida);

      Button escanear = new Button("Escanear código")
         .onAction(c ->
         {
            BarcodePicker scanner = new BarcodePicker("Aponte para o código", BarcodePicker.formats1D)
            {
               protected void onBarcode(BarcodeFormat format, String code)
               {
                  onUI(() -> saida.setText(format + ": " + code)); // paint thread पर वापस
                  hide(); // पहली रीडिंग के बाद बंद हो जाता है (अपने आप बंद नहीं होता)
               }
            };
            scanner.show(answer -> {});
         });
      add(LAY_AUTO, escanear);
   }
}

नीचे दिए गए स्निपेट केवल मूल भाग दिखाते हैं (जो onShow() के अंदर जाता है)। चलाने के लिए, इन्हें ऊपर दिए MainWindow कंकाल में रखें।

बुनियादी उपयोग

BarcodePicker scanner = new BarcodePicker("Aponte para o código", BarcodePicker.formats1D)
{
   protected void onBarcode(BarcodeFormat format, String code)
   {
      Debug.log(format + ": " + code);
      hide(); // पहली रीडिंग के बाद बंद हो जाता है
   }
};
scanner.show(answer -> campoCodigo.setText((String) answer));

कंस्ट्रक्टर

कंस्ट्रक्टर विवरण
BarcodePicker(String title, BarcodeFormat... formats) शीर्षक + स्वीकृत फ़ॉर्मेट (varargs; खाली = सभी)। अमूर्त — onBarcode कार्यान्वित करने वाली बॉडी के साथ इंस्टेंशिएट करें।

गुण और अनुकूलन

सदस्य प्रकार डिफ़ॉल्ट क्या करता है
BarcodePicker.formats1D (स्थैतिक) BarcodeFormat[] — 1D फ़ॉर्मेट का तैयार सेट (CODE_128, EAN_13…)।
BarcodePicker.formats2D (स्थैतिक) BarcodeFormat[] — 2D फ़ॉर्मेट का तैयार सेट (QR_CODE)।
BarcodePicker.beep (स्थैतिक) boolean true डिकोड करने पर बीप करता है।
BarcodePicker.vibrate (स्थैतिक) boolean true डिकोड करने पर कंपन करता है।

कॉलबैक और इवेंट

कॉलबैक कब ट्रिगर होता है
onBarcode(BarcodeFormat, String) (अमूर्त) स्वीकृत फ़ॉर्मेट के किसी कोड को डिकोड करने पर।
show(onAnswer) बंद होने पर, अंतिम पढ़े गए पेलोड की String देता है।

getAnswer() अंतिम डिकोड किया गया पेलोड लौटाता है, या यदि रद्द किया गया हो तो null।

अवस्थाएँ

  • पता चलने पर कोई स्वचालित hide() नहीं है — बंद करने का निर्णय आपका onBarcode लेता है (hide() कॉल करके)। इसके बिना, स्कैनर पढ़ता रहता है (निरंतर रीडिंग के लिए उपयोगी)।
  • लगातार दोहराए गए कोड (समान lastCode) अनदेखे किए जाते हैं।
  • onAppPause/onAppResume कैमरा प्रबंधित करते हैं; onRemove डिकोडिंग थ्रेड को रोकता है।

केवल QR स्वीकार करें और पहली रीडिंग पर बंद करें

BarcodePicker scanner = new BarcodePicker("Leia o QR", BarcodePicker.formats2D)
{
   protected void onBarcode(BarcodeFormat format, String code)
   {
      onUI(() -> campoCodigo.setText(code)); // paint thread में UI अपडेट
      hide();
   }
};
scanner.show(answer -> Debug.log("Lido: " + answer));

अच्छे तरीके

  • एकल रीडिंग के लिए onBarcode में hide() कॉल करें; निरंतर रीडिंग के लिए इसे छोड़ दें।
  • डिकोडिंग पृष्ठभूमि थ्रेड में चलती है — UI अपडेट को onUI(...) में लपेटें।

सामान्य गलतियाँ

  • hide() भूल जाना जब एकल रीडिंग चाहते थे — स्कैनर सक्रिय रहता है।
  • onBarcode में सीधे UI अपडेट करना — onUI(...) के साथ paint thread का सम्मान करें।

यह भी देखें

  • क्षेत्र गाइड: ui/ · रेसिपी: cookbook/
  • पैटर्न का आधार: Picker
  • संबंधित घटक: PhotoPicker
क्या यह पृष्ठ उपयोगी था?