2015-10-16 68 views

回答

0

它非常简单,你需要startActivityforResult,类似的来电呼叫其他活动..

在你行动时,扫描被调用,你需要调用以下:

public InvokeScan() 
{ 
    mAppPAckage="com.google.zxing.client.android.SCAN" 
    Intent intentScan = new Intent(mAppPackage); 
    intentScan.addCategory(Intent.CATEGORY_DEFAULT); 


    // set the desired barcode types 
    intentScan.putExtra("SCAN_FORMATS", stringDesiredBarcodeFormats); 

    final PackageManager packageManager = activity.getPackageManager(); 
    List<ResolveInfo> list = packageManager.queryIntentActivities(intentScan, 
          PackageManager.MATCH_DEFAULT_ONLY); 


    activity.startActivityForResult(intentScan,REQUEST_CODE); 

onActivityResult,你需要捕获结果

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     if (resultCode == Activity.RESULT_OK) 
     { 
      String desiredBarCodeFormat = BarCodeActivity.sDesiredBarcodeFormatValue;*/ 
      String contents = intent.getStringExtra(activityBundleName); 
      String formatName = intent.getStringExtra(desiredBarCodeFormat); 

      //do whatever you want from contents. 
     } 
    } 

内容将是您需要的条形码号码。

+0

嗨阿希什拉威,谢谢你提出这个问题,但我正在寻找一种方法来发送一个已经在Zxing电话中获得条形码的pircture。你知道如何做到这一点?谢谢。 – Carlos

0

ZXing有各种各样的叉子可以使用。

例如:https://zxingnet.codeplex.com/

// create a barcode reader instance 
IBarcodeReader reader = new BarcodeReader(); 
// load a bitmap 
var barcodeBitmap = (Bitmap)Bitmap.LoadFrom("C:\\sample-barcode-image.png"); 
// detect and decode the barcode inside the bitmap 
var result = reader.Decode(barcodeBitmap); 
// do something with the result 
if (result != null) 
{ 
    txtDecoderType.Text = result.BarcodeFormat.ToString(); 
    txtDecoderContent.Text = result.Text; 
} 
+0

提供的示例是zxing的.NET版本,不适用于Android。 OP没有提到Xamarin,所以我不认为这是相关的 – redspidermkv

0

如果你不想坚持到斑马线,你可以去Barcode Scanning Apis可以从谷歌Play业务7.8版本。这有能力读取各种条形码。它可以将图像作为位图或直接扫描条形码。假设您已从图库中获取图像并将其转换为位图。请在下面的代码中找到使用此库发送要扫描的条形码图像的代码。

Frame frame = new Frame.Builder().setBitmap(bitmap).build(); 
    BarcodeDetector barcodeDetector = new BarcodeDetector.Builder(context) 
        .build(); 
if(barcode.isOperational()){ 
    SparseArray<Barcode> sparseArray = barcodeDetector.detect(frame); 
       if(sparseArray != null && sparseArray.size() > 0){ 
        for (int i = 0; i < sparseArray.size(); i++){ 
             Log.d(LOG_TAG, "Value: " + sparseArray.valueAt(i).rawValue + "----" + sparseArray.valueAt(i).displayValue); 
             Toast.makeText(LOG_TAG, sparseArray.valueAt(i).rawValue, Toast.LENGTH_SHORT).show(); 

            } 
       }else { 
        Log.e(LOG_TAG,"SparseArray null or empty"); 
       } 

}else{ 
    Log.e(LOG_TAG, "Detector dependencies are not yet downloaded"); 
} 

在你的build.gradle文件,包括根据依赖关系部分如下:编译 'com.google.android.gms:发挥服务:7.8 +。' 并添加以下清单权限:

<uses-feature android:name="android.hardware.camera" /> 
     <uses-feature android:name="android.hardware.camera.autofocus" /> 

     <uses-permission android:name="android.permission.INTERNET" /> 
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
     <uses-permission android:name="android.permission.CAMERA" /> 
     <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <uses-feature android:name="android.hardware.camera" /> 
     <uses-feature android:name="android.hardware.camera.autofocus" /> 

     <uses-permission android:name="android.permission.INTERNET" /> 
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
     <uses-permission android:name="android.permission.CAMERA" /> 
     <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

    <!-- Meta data for google play services: --> 

    <meta-data 
       android:name="com.google.android.gms.version" 
       android:value="@integer/google_play_services_version" /> 

    <!-- Meta data for first time install/run time dependencies to be downloaded for getting barcode detector operational --> 

    <meta-data 
       android:name="com.google.android.gms.vision.DEPENDENCIES" 
       android:value="barcode" /> 

有关此api的详细用法,请参阅Github Sample,关注Code Lab,Documentation

相关问题