Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ZBar(Android)SDK,我的应用程序从同一本书中获得不同的ISBN_Java_Android_Zbar - Fatal编程技术网

Java 使用ZBar(Android)SDK,我的应用程序从同一本书中获得不同的ISBN

Java 使用ZBar(Android)SDK,我的应用程序从同一本书中获得不同的ISBN,java,android,zbar,Java,Android,Zbar,我正在创建一个应用程序,它使用Android上的ZBar SDK扫描书籍并获取其ISBN。我已经把一切都安排在身体方面了。你按下一个按钮,扫描仪窗口弹出并扫描条形码 当应用程序从扫描器中获取ISBN时,问题就出现了,扫描器可能读取的条形码不正确,或者我没有提取正确的数据。有人知道如何解决这个问题吗?谢谢下面是相关代码和一些屏幕 @Override public void onClick(View v) { //TODO add functionallity if(v.g

我正在创建一个应用程序,它使用Android上的ZBar SDK扫描书籍并获取其ISBN。我已经把一切都安排在身体方面了。你按下一个按钮,扫描仪窗口弹出并扫描条形码

当应用程序从扫描器中获取ISBN时,问题就出现了,扫描器可能读取的条形码不正确,或者我没有提取正确的数据。有人知道如何解决这个问题吗?谢谢下面是相关代码和一些屏幕

    @Override
public void onClick(View v) 
{
    //TODO add functionallity
    if(v.getId() == R.id.ScanButton)
    {
        Intent intent = new Intent(this, ZBarScannerActivity.class);
        intent.putExtra(ZBarConstants.SCAN_MODES, new int[]{Symbol.ISBN10, Symbol.ISBN13, Symbol.EAN8, Symbol.EAN13 });
        startActivityForResult(intent, ZBAR_SCANNER_REQUEST);

    }

}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{    
    if (resultCode == RESULT_OK) 
    {
        // Scan result is available by making a call to data.getStringExtra(ZBarConstants.SCAN_RESULT)
        // Type of the scan result is available by making a call to data.getStringExtra(ZBarConstants.SCAN_RESULT_TYPE)
        contentText.setText("ISBN: " + data.getStringExtra(ZBarConstants.SCAN_RESULT));
        Toast.makeText(this, "Scan Result = " + data.getStringExtra(ZBarConstants.SCAN_RESULT), Toast.LENGTH_SHORT).show();

        Toast.makeText(this, "Scan Result Type = " + data.getStringExtra(ZBarConstants.SCAN_RESULT_TYPE), Toast.LENGTH_SHORT).show();
        // The value of type indicates one of the symbols listed in Advanced Options below.
    } 
    else if(resultCode == RESULT_CANCELED) 
    {
        Toast.makeText(this, "Scanning Cancelled", Toast.LENGTH_SHORT).show();
    }
}


我们已经在一个桌面应用程序的生产中使用了Zbar。在本文中,我们从图像中提取条形码并使用它。虽然它与您的不同,但问题与我们从实时流中提取条形码的问题相同

您面临的问题非常普遍且容易出错。最终一切都取决于画面。(事实上,你会在
Zxing
Eymbarcode
和其他开源代码中观察到同样的行为。我发现最稳定的是)。最终,我们不得不求助于拍照指南。以下是我们用来避免这种情况的质量因素:

以下因素决定了应用程序的检测能力:

  • 决议
  • 焦点
  • 照明和曝光
  • 噪音
  • 因此,在拍照时,必须注意以上四点

  • 分辨率:希望条形码占据图像的重要部分。对于长线性条形码或密集的二维符号,可能必须提高分辨率。如果分辨率降低到两个像素以下,将很难扫描条形码

  • 焦点:模糊图像是非常不需要的。即使条形码的一部分由模糊部分组成,也会导致无法检测

  • 照明和曝光:太亮或曝光过度的图像可能会完全洗掉任何条形码。太暗或曝光不足的图像将无法为扫描仪提供足够的对比度。低光照也会产生噪音较大的图像

  • 噪音:亮度/颜色的随机变化会使扫描条形码变得困难

  • 角度:最好将条形码水平或垂直放置

  • 倾斜:最好将相机垂直于图像放置


  • 上面所述并不能解决您的问题,但我希望它能帮助您

    我们已经在一个桌面应用程序的生产中使用了Zbar。在本文中,我们从图像中提取条形码并使用它。虽然它与您的不同,但问题与我们从实时流中提取条形码的问题相同

    您面临的问题非常普遍且容易出错。最终一切都取决于画面。(事实上,你会在
    Zxing
    Eymbarcode
    和其他开源代码中观察到同样的行为。我发现最稳定的是)。最终,我们不得不求助于拍照指南。以下是我们用来避免这种情况的质量因素:

    以下因素决定了应用程序的检测能力:

  • 决议
  • 焦点
  • 照明和曝光
  • 噪音
  • 因此,在拍照时,必须注意以上四点

  • 分辨率:希望条形码占据图像的重要部分。对于长线性条形码或密集的二维符号,可能必须提高分辨率。如果分辨率降低到两个像素以下,将很难扫描条形码

  • 焦点:模糊图像是非常不需要的。即使条形码的一部分由模糊部分组成,也会导致无法检测

  • 照明和曝光:太亮或曝光过度的图像可能会完全洗掉任何条形码。太暗或曝光不足的图像将无法为扫描仪提供足够的对比度。低光照也会产生噪音较大的图像

  • 噪音:亮度/颜色的随机变化会使扫描条形码变得困难

  • 角度:最好将条形码水平或垂直放置

  • 倾斜:最好将相机垂直于图像放置


  • 以上这些并不能解决您的问题,但我希望能有所帮助

    这是一个好答案。在做了大量的测试之后,我认为最合理的选择将是基本上加强相机的良好使用。当然,我会检查一些东西,比如字符串长度和某些数字的一致性,这些都会出现在所有的ISBN中,但是一次良好规则的扫描似乎是最用户友好的选择。谢谢。@Alioo我的荣幸:)这是一个很好的回答。在做了大量的测试之后,我认为最合理的选择将是基本上加强相机的良好使用。当然,我会检查一些东西,比如字符串长度和某些数字的一致性,这些都会出现在所有的ISBN中,但是一次良好规则的扫描似乎是最用户友好的选择。谢谢。@Alioo我的荣幸:)