如何在android平台上实现对图库中条形码的扫描

如何在android平台上实现对图库中条形码的扫描,android,image,barcode,barcode-scanner,Android,Image,Barcode,Barcode Scanner,这是我试过的 我已经在android应用程序中实现了Zbar扫描仪,在该应用程序中我可以扫描barocde并得到结果 我已经在我的android项目中实现了。现在我想实现一个扫描仪,它可以扫描来自图库的图像(当然是条形码图像)。我知道这无论如何是可能的。检查链接。它具有条形码图像扫描功能 我试着把它找出来,但失败了。请帮帮我。现在,Google Play Services 7.8版提供了新版本,这是可能的。它具有检测作为位图传递的条形码的方法。 从gallery获取图像路径,并将其转换为位图,然

这是我试过的

我已经在android应用程序中实现了Zbar扫描仪,在该应用程序中我可以扫描barocde并得到结果

我已经在我的android项目中实现了。现在我想实现一个扫描仪,它可以扫描来自图库的图像(当然是条形码图像)。我知道这无论如何是可能的。检查链接。它具有条形码图像扫描功能


我试着把它找出来,但失败了。请帮帮我。

现在,Google Play Services 7.8版提供了新版本,这是可能的。它具有检测作为位图传递的条形码的方法。 从gallery获取图像路径,并将其转换为位图,然后按如下方式传递:

     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");
}
Frame Frame=new Frame.Builder().setBitmap(bitmap.build();
BarcodeDetector BarcodeDetector=新的BarcodeDetector.Builder(上下文)
.build();
if(条形码.等操作()){
SparseArray SparseArray=条码检测器。检测(帧);
if(sparseArray!=null&&sparseArray.size()>0){
对于(int i=0;i
在build.gradle文件中,在“依赖项”部分下包括以下内容: 编译'com.google.android.gms:play services: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" />

google play服务的元数据:

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

要下载的第一次安装/运行时依赖项的元数据,以使条形码检测器运行

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


有关此api的详细用法,请参阅,遵循。

我认为您的问题不是关于条形码扫描,而是如何从媒体扫描仪读取图像文件?@yushulx。谢谢你的评论。实际上我想解码保存在SD卡中的条形码图像。在我的项目中,我已经成功地通过摄像头实现了条形码扫描仪。我明白了。它是存储图像数据的唯一场所(environment.externalstorage)。以下是基本步骤:1、获取图像路径。2、将图像加载到位图。3、使用RGBLuminanceSource包装数据进行解码。@YUSULX。谢谢你的建议。这很有效。