首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OS6中黑莓二维码解码问题

OS6中黑莓二维码解码问题
EN

Stack Overflow用户
提问于 2012-02-14 20:26:26
回答 3查看 615关注 0票数 0

我使用以下代码作为2D-QR码的解码器。

代码语言:javascript
复制
package com.test.rim;

import java.util.*;

import net.rim.device.api.barcodelib.*;
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.ui.UiApplication;

import net.rim.device.api.ui.component.Dialog;

import com.google.zxing.*;

final class BarcodeScanScreen extends MainScreen{

    BarcodeScanScreen barcodeScanScreen;

    BarcodeScanScreen(){

        BarcodeDecoderListener listener = new BarcodeDecoderListener(){

            public void barcodeDecoded( String rawText )
            {
                Dialog.alert(rawText);
            }
        };

        Hashtable hints = new Hashtable(1);
        Vector formats  = new Vector(1);
        formats.addElement(BarcodeFormat.QR_CODE);
        hints.put(DecodeHintType.POSSIBLE_FORMATS, formats);

        BarcodeDecoder decoder = new BarcodeDecoder( hints );

        try{
            BarcodeScanner scanner = new BarcodeScanner( decoder, listener );
            scanner.getVideoControl().setDisplayFullScreen( true );
            add( scanner.getViewfinder() );
            scanner.startScan();
        }catch (Exception e)
        {
            // Catch errors here
            Dialog.alert("Error:" + e.getMessage());
        }
    }
}

为了启动这个屏幕,我在前一个屏幕的按钮上触发了一个代码app.pushScreen(new BarcodeScanScreen());

当我运行代码时,BarcodeScanScreen正常启动,扫描也在进行(因为设备的红灯在闪烁)。只要我把摄像头放在任何有效的二维二维码前面,闪烁就会停止。我认为这意味着,任何条形码都被成功解码,因此扫描器停止。但barcodeDecoded()方法不会触发,因为屏幕上没有出现警报消息。我的代码中有什么问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-15 21:08:11

我在barcodeDecoded()中使用了这段代码,它解决了我的问题。

代码语言:javascript
复制
app.invokeLater(new Runnable() {
                    public void run() {
                      try { javax.microedition.media.Manager.playTone(ToneControl.C4, 1000, 100);} catch (MediaException e) { } 
                      app.popScreen(_barcodeScreen);
                      showDecoded(rawText);
                }
            });
            _barcodeScreen.invalidate();
票数 1
EN

Stack Overflow用户

发布于 2012-02-14 21:27:40

你的代码看起来很好,所以我唯一能想到的就是Dialog.alert不能成功运行,因为你的BarcodeScanScreen不能在它上面显示一个模式对话框--视频预览窗口不能有覆盖。在显示警报之前,请尝试停止扫描仪并从堆栈中弹出视频预览屏幕。

票数 0
EN

Stack Overflow用户

发布于 2012-02-15 14:28:30

问题是,在获取BarcodeDecoderListener;中的数据后,您没有停止扫描

首先查看黑莓示例名称BarcodeDemo提供的示例代码;

在你的代码中,不要这样做:

代码语言:javascript
复制
BarcodeDecoderListener listener = new BarcodeDecoderListener()
{
    public void barcodeDecoded( String rawText )
    {
         Dialog.alert(rawText);
    }
};

如下所示:

代码语言:javascript
复制
BarcodeDecoderListener listener =new BarcodeDecoderListener() 
{
public void barcodeDecoded(String rawText) 
{
    try 
    {           
        barcodeScanner.stopScan();
         Dialog.alert(rawText);
    } 
    catch (Exception e) 
    {
        //Catch the Exception
    }                   
}
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9276852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档