Android中如何实现从相册扫描条形码?

7

以下是我的尝试。

我在安卓应用程序中实现了Zbar扫描仪,可以扫描条形码并获得结果。

我在我的安卓项目中实现了这个。现在我想要实现一个从图库中扫描图像的扫描器(当然是条形码图像)。我知道这可能会有所不同。请查看这个链接。它有条形码图像扫描功能。

我已经尝试搜索,但失败了。请帮帮我。


我认为你的问题不是关于条形码扫描,而是如何从媒体扫描器中读取图像文件? - yushulx
1
@yushulx。感谢您的评论。实际上,我想解码保存在SD卡中的条形码图像。我已经成功地在我的项目中通过相机实现了条形码扫描器。 - Hitesh Kamani
1
我知道了。这是存储图像数据的唯一位置(environment.externalstorage)。以下是基本步骤:1、获取图像路径。2、将图像加载到位图中。3、使用RGBLuminanceSource将数据包装为解码。 - yushulx
@yushulx。感谢您的建议。这个方法非常有效。 - Hitesh Kamani
1个回答

10

现在有了谷歌播放服务7.8版本提供的新的条形码扫描API,这是可能的。它具有检测作为位图传递的条形码的方法。 从相册获取图像路径并将其转换为位图,然后像下面这样传递:

     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 文件中,在 dependencies 部分下包含以下内容: compile '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" />

谷歌播放服务的元数据:

<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的详细使用,请参阅Github示例,跟随Code Lab文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接