यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
QR Code या बारकोड कैसे पढ़ें
उद्देश्य। कैमरा खोलें और BarcodePicker के साथ लाइव QR Code या बारकोड पढ़ें, या
CameraBarcode के साथ पहले से कैप्चर की गई किसी Image से कोड डिकोड करें।
उपयोग की गई APIs
BarcodePicker(String title, BarcodeFormat... formats)— लाइव रीडिंग की abstract विंडो; आप इसे extend करते हैं औरonBarcode(BarcodeFormat, String)लागू करते हैं। खालीformats= सभी स्वीकार करता है।abstract void onBarcode(BarcodeFormat format, String code)— प्रारूप फ़िल्टर से गुजरने वाले प्रत्येक नए डिकोड किए गए कोड पर कॉल किया जाता है।BarcodePicker.formats1D/formats2D(स्टैटिक arrays) — प्रारूपों के तैयार सेट;formats2DमेंQR_CODEहै।BarcodePicker.beep/BarcodePicker.vibrate(स्टैटिकboolean) — डिकोड करते समय फ़ीडबैक (डिफ़ॉल्टtrue)।String getAnswer()— अंतिम डिकोड किया गया कोड, या रद्द होने परnull।CameraBarcode.readBarcode(Image img)→com.google.zxing.Result(याnull) — किसी स्थिर छवि से डिकोड करता है। यह thread-safe नहीं है।
महत्वपूर्ण भिन्नता।
BarcodePickerabstractहै औरRunnableWithप्रकार के callback के बजायonBarcode(...)मेथड का उपयोग करता है। एक उपवर्ग (अनाम या नामित) instantiate करें। picker डिकोड करते समय पहले से हीbeep()/vibrate(20)निकालता है और दोहराए गए कोड को दबा देता है (केवल तभीonBarcodeकॉल करता है जब टेक्स्ट बदलता है)। यह पढ़ने पर स्वयं बंद नहीं होता — यदि आप पहली रीडिंग पर समाप्त करना चाहते हैं तोonBarcodeके अंदरhide()कॉल करें। “X” (नीचे दायाँ कोना) टैप करने पर रद्द हो जाता है।
पूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
package com.exemplo;
import com.google.zxing.*; // BarcodeFormat
import dev.crossfly.ui.*; // Window, Component, Button, Label
import dev.crossfly.ui.layout.*; // VerticalLayout
import dev.crossfly.ui.picker.*; // BarcodePicker
/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
Label resultado = new Label("");
add(LAY_AUTO, resultado);
Button acao = new Button("Ler QR Code");
acao.onAction(c ->
{
// लाइव रीडिंग — केवल QR Code; पहली रीडिंग पर बंद हो जाता है
BarcodePicker picker = new BarcodePicker("Aponte para o QR", BarcodePicker.formats2D)
{
protected void onBarcode(BarcodeFormat format, String code)
{
// paint thread के बाहर कॉल किया गया → onUI(...) के साथ UI पर लौटें
Component.onUI(() ->
{
resultado.setText("Lido: " + code);
hide(); // पहली रीडिंग पर scanner बंद करता है (वैकल्पिक)
});
}
};
picker.show();
});
add(LAY_AUTO, acao);
}
}
नीचे का अंश केवल मुख्य भाग दिखाता है। चलाने के लिए, इसे ऊपर दिए गए
MainWindowढाँचे में रखें।
न्यूनतम अंश
// स्रोत में सत्यापित: BarcodePicker.java (constructor, onBarcode, formats2D, getAnswer); CameraBarcode.java (readBarcode)
import com.google.zxing.*; // BarcodeFormat, Result
import dev.crossfly.ui.picker.*; // BarcodePicker
import dev.crossfly.ui.*; // Component (onUI)
// 1) लाइव रीडिंग — केवल QR Code; पहली रीडिंग पर बंद हो जाता है
BarcodePicker picker = new BarcodePicker("Aponte para o QR", BarcodePicker.formats2D) {
protected void onBarcode(BarcodeFormat format, String code) {
// paint thread के बाहर कॉल किया गया → onUI(...) के साथ UI पर लौटें
Component.onUI(() -> {
processar(code); // उदा.: किसी field को भरें, नेविगेट करें, आदि।
hide(); // पहली रीडिंग पर scanner बंद करता है (वैकल्पिक)
});
}
};
picker.show(); // सभी formats स्वीकार करने के लिए constructor में formats खाली छोड़ें
// 2) किसी स्थिर Image से डिकोड करें (एक समय में एक camera/thread — thread-safe नहीं है)
Result r = CameraBarcode.readBarcode(minhaImagem);
if (r != null) {
String texto = r.getText();
BarcodeFormat fmt = r.getBarcodeFormat();
}
और गहराई में जाएँ
- कैमरा गाइड: डिवाइस का कैमरा · Widget: BarcodePicker
- संबंधित रेसिपी: tirar-foto.md