如何在 android 中实现从图库中扫描条码
How to implement scanning of barcode from gallery in android
这是我试过的。
我在 android 应用程序中实现了 Zbar 扫描仪,我可以在其中扫描条形码并获得结果。
我已经实现了this in my android project. now I want to implement scanner which scans images(of course Bar code images) from gallery. I know this can be possible anyhow. check thislink。有条形码图片扫描。
我试图搜索它但失败了。请帮帮我。
现在可以通过 Google Play 服务 7.8 版本提供的新 Barcode Scanning Apis 实现。它具有检测作为位图传递的条形码的方法。
从图库中获取图像路径并将其转换为位图并像下面这样传递:
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 部分包含以下内容:
编译 '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 播放服务的元数据:
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
首次元数据install/run 为使条形码检测器运行而需要下载的时间依赖项。
<meta-data
android:name="com.google.android.gms.vision.DEPENDENCIES"
android:value="barcode" />
这个api的详细用法,参考Github Sample, follow Code Lab, Documentation。
这是我试过的。
我在 android 应用程序中实现了 Zbar 扫描仪,我可以在其中扫描条形码并获得结果。
我已经实现了this in my android project. now I want to implement scanner which scans images(of course Bar code images) from gallery. I know this can be possible anyhow. check thislink。有条形码图片扫描。
我试图搜索它但失败了。请帮帮我。
现在可以通过 Google Play 服务 7.8 版本提供的新 Barcode Scanning Apis 实现。它具有检测作为位图传递的条形码的方法。 从图库中获取图像路径并将其转换为位图并像下面这样传递:
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 部分包含以下内容: 编译 '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 播放服务的元数据:
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
首次元数据install/run 为使条形码检测器运行而需要下载的时间依赖项。
<meta-data
android:name="com.google.android.gms.vision.DEPENDENCIES"
android:value="barcode" />
这个api的详细用法,参考Github Sample, follow Code Lab, Documentation。