【问题标题】:How to disbale 1D scanner code on mobile device in android如何在 android 中禁用移动设备上的一维扫描仪代码
【发布时间】:2019-07-19 10:35:28
【问题描述】:

我正在为我的应用程序使用一维扫描仪,即“https://www.issyzonepos.com/ipda018-android-7-0-pda-bluetooth-4-1-support-gprs-wifi_p326.html”。该应用程序基本上是用于扫描代码和订购数据。我还通过相机实现了扫描仪。我的 APP 在此设备上运行良好,但是当我尝试在移动设备上运行它时,它会在“sm = new ScanDevice();”上崩溃因为它是非扫描设备。我尝试了很多来解决这个问题,你能告诉我我该如何解决这个问题。我已使用此设备的 SDK 来扫描扫描仪。

代码:

    sm = new ScanDevice();

     public void onKeyDown(int keyCode, KeyEvent event) {

    int charCode = event.getKeyCode();

    System.out.println("charCode = " + keyCode + "  " + event);
    //sm.openScan();

    if (charCode == 302 || charCode == 301 || charCode == 303) {
        if (spBar.getSelectedItem().toString().trim().equals("SELECT BAR")) {
            Toast.makeText(getActivity(), getResources().getString(R.string.select_a_bar), Toast.LENGTH_SHORT).show();
        } else {
            InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(
                    Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(actSearchCode.getApplicationWindowToken(), 0);

            System.out.println("openScannerL = " + sm.getOutScanMode());

            sm.openScan();
        }
    } else if (charCode == 82) {

    } else {
        sm.closeScan();
    }

}

为了完整起见,这里是来自 OP 的错误的堆栈跟踪 - 不幸的是,作为屏幕截图。

第 76 行是sm = new ScanDevice();

【问题讨论】:

  • 最简单的方法就是在该行周围加上try-catch - 并酌情处理。如果您需要任何更具体的帮助,您需要显示更多代码
  • @AleksG 检查我更新的代码

标签: android android-layout android-fragments barcode-scanner scanning


【解决方案1】:

正如我在评论中提到的,您可以在 try-catch 块内创建您的扫描仪实例。为此,您必须在类中声明变量,但在方法中实例化它。你的代码仍然没有显示你在哪里声明你的sm,但你最终可能会得到这样的结果:

public class MyScanActivity extends Activity {
    ScanDevice sm;

    public void onCreate(Bundle bundle) {
        try {
            ...
            sm = new ScannerDevice();
            ...
        } catch (Exception ex) {
            Log.w("SCANNER_ACTIVITY", "Could not create scanner device - not a scanner?");
        }
        ...
    }

    public void onKeyDown(int keyCode, KeyEvent event) {
        ...
        if (sm == null) {
            Log.i("SCANNER_ACTIVITY", "Scanner not instantiated - not a scanner?");
        } else {
            // all your scanning code goes here
        }
    }
}

【讨论】:

  • 它不工作。崩溃和抛出错误。 prntscr.com/oh98fk
  • @mishti 第 76 行是什么?
  • sm = new ScannerDevice();
  • @mishti 尝试将catch (Exception ex) 更改为catch (Throwable ex)
猜你喜欢
  • 1970-01-01
  • 2014-01-11
  • 1970-01-01
  • 2011-05-23
  • 2019-06-12
  • 1970-01-01
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
相关资源
最近更新 更多