2012-01-04 68 views
2

我刚刚使用BarCode扫描仪(ZXing 1.7)制作了应用程序。用户在手机上不使用条码扫描器,因此我无法将外部条码扫描器添加到我的应用程序中。我已经将ZXing的源代码添加到了我的项目中,但我不知道如何无意地执行它。请帮帮我。如何从Java,Android上的ZXing源码执行BarCode扫描器?

更新:要不我怎么能作出这样的外部条形码扫描仪会自动与我的应用程序被安装?

+0

我会尽快改进,但现在我很困惑,请给我一个想法! – user1078760 2012-01-04 17:59:05

回答

2

无法安装外部条形码扫描仪进行自动安装。你可以做的是检查它是否已安装,如果没有显示对话框询问用户是否要安装它(这将使用户进入应用程序市场链接)。

如果你想避免这种情况,可以直接集成斑马线库,但它需要更多的工作。条码扫描器应用程序是开源的,所以你可以看到如何从那里做到这一点。

+0

你有没有做过类似的事情? – user1078760 2012-01-04 18:31:04

+0

我已经和他们提供了一个集成意图,使用它。阅读该文件中的文档,它会告诉你如何完成@JJJ刚才所说的工作。 – Kaediil 2012-01-04 19:40:54

0

只需使用提供Intent-based integration code。这很容易。它会将用户发送到市场以下载应用程序。这比尝试自动安装它至少要好三个原因。首先,我不认为用户希望应用安装其他应用,并且可能不喜欢它。其次,只有当用户将设备设置为允许来自Market以外的第三方应用程序时,它才可能工作。最后,您将安装一个潜在的旧版本。

1

如果斑马线条形码扫描器安装在移动,它很容易:

Intent intent = new Intent(
           "com.google.zxing.client.android.SCAN"); 
         intent.putExtra("SCAN_MODE", "PRODUCT_MODE");//for Qr code, its "QR_CODE_MODE" instead of "PRODUCT_MODE" 
         intent.putExtra("SAVE_HISTORY", false);//this stops saving ur barcode in barcode scanner app's history 
         startActivityForResult(intent, 0); 

OnActivityResult

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == 0) { 
      if (resultCode == RESULT_OK) { 
        String contents = 

data.getStringExtra("SCAN_RESULT"); //this is the result 
    } 
else if (resultCode == RESULT_CANCELED) { 

     // Handle cancel 

} 

如果它没有安装:U可以把这个代码在试戴catch块和捕捉异常,U可以做到这一点:

Uri marketUri = Uri 
           .parse("market://details?id=com.google.zxing.client.android"); 
         Intent marketIntent = new Intent(Intent.ACTION_VIEW, 
           marketUri); 
         startActivity(marketIntent); 

所以它重定向应用如果安装了条码扫描器,则应用程序会继续运行一次。

如果妳不想使用在乌拉圭回合应用程序中的其他应用程序,U必须下载斑马线库,并尝试使用从core.jar添加文件类(它使用Apache Ant创建)。按照这个教程做的:http://code.google.com/p/zxing/wiki/GettingStarted