Google 扫码器 API 提供一整套的扫码解决方案
而无需应用请求相机权限,同时可保护用户
保护隐私。可通过将扫描代码的任务委托给
Google Play 服务,并且仅将扫描结果返回给您的应用(视频 1)。
所有图片处理操作都在设备上进行,Google 不会存储结果
或图片数据API 支持的代码格式与
ML Kit Barcode Scanning API 并返回
相同的Barcode
对象。
此 API 非常适合需要无缝代码扫描而不需要 以提供自定义界面或相机体验。实现完全在 Google Play 服务,确保尽可能减少对应用大小的影响。
从 16.1.0 版开始,您可以启用自动缩放功能,以允许 Google 代码使用 扫描仪可自动扫描远离相机的条形码。时间 用户将设备对准条形码,扫描器将智能检测 然后放大条形码这样就无需手动缩放 使条形码扫描更快速、更准确、更易于访问 (见视频 2)。
视频 1.Google 扫码器集成 | 视频 2.自动缩放效果 |
对于需要自定义界面的更复杂的用例,我们建议使用 ML Kit Barcode Scanning API。
如果您有疑问、想要提交 bug 或需要帮助,请查看 机器学习套件社区页面。
<ph type="x-smartling-placeholder">准备工作
<ph type="x-smartling-placeholder">为了让您的应用做好准备,请完成以下部分中的步骤。
配置您的应用
在顶级
settings.gradle
文件中,添加 Google 的 Maven 制品库和 Maven 中央代码库下dependencyResolutionManagement
块:dependencyResolutionManagement { repositories { google() mavenCentral() } }
为
play-services-code-scanner
添加 Google Play 服务依赖项 SDK 添加到您的模块的 Gradle build 文件(通常为app/build.gradle
)中:dependencies { implementation 'com.google.android.gms:play-services-code-scanner:16.1.0' }
您可以将应用配置为自动启用 Google Play 服务 从以下位置安装您的应用时,将扫描器模块下载到设备上 Play 商店。
<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="barcode_ui"/> ... </application>
您也可以明确检查扫描器模块的可用性和请求 通过 Google Play 服务下载 ModuleInstallClient API。
如果您未启用安装时模块下载或 但系统尚未为另一个应用安装扫描器模块 用例 - Google Play 服务会下载扫描器模块, 使用它。
扫描二维码
请按照以下步骤扫描条形码。
可选:配置扫码器。
如果您知道要读取的条形码的格式, 而将条形码检测器配置为仅检测 格式。例如,要仅检测 Aztec 码和 QR 码,请构建
GmsBarcodeScannerOptions
对象,如以下示例所示:Kotlin
val options = GmsBarcodeScannerOptions.Builder() .setBarcodeFormats( Barcode.FORMAT_QR_CODE, Barcode.FORMAT_AZTEC) .build()
Java
GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder() .setBarcodeFormats( Barcode.FORMAT_QR_CODE, Barcode.FORMAT_AZTEC) .build();
默认情况下,自动缩放功能处于停用状态。启用自动缩放功能 从版本 16.1.0 开始,请调用
enableAutoZoom()
,如 以下代码示例。Kotlin
val options = GmsBarcodeScannerOptions.Builder() .setBarcodeFormats(...) .enableAutoZoom() // available on 16.1.0 and higher .build()
Java
GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder() .setBarcodeFormats(...) .enableAutoZoom() // available on 16.1.0 and higher .build();
获取
GmsBarcodeScanner
的实例, 如代码示例所示:Kotlin
val scanner = GmsBarcodeScanning.getClient(this) // Or with a configured options // val scanner = GmsBarcodeScanning.getClient(this, options)
Java
GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(this); // Or with a configured options // GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(context, options);
通过调用
startScan()
请求代码扫描。Kotlin
scanner.startScan() .addOnSuccessListener { barcode -> // Task completed successfully } .addOnCanceledListener { // Task canceled } .addOnFailureListener { e -> // Task failed with an exception }
Java
scanner .startScan() .addOnSuccessListener( barcode -> { // Task completed successfully }) .addOnCanceledListener( () -> { // Task canceled }) .addOnFailureListener( e -> { // Task failed with an exception });
处理生成的
Barcode
。Kotlin
val rawValue: String? = barcode.rawValue
Java
String rawValue = barcode.getRawValue();