Google Code Scanner 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 напрямую.
Если у вас есть вопросы, вы хотите сообщить об ошибке или вам нужна помощь, посетите страницу сообщества ML Kit.
Подготовка
Чтобы подготовить приложение, выполните нужные действия в разделах, указанных ниже.
Настройка приложения
Добавьте репозиторий Google Maven и центральный репозиторий Maven в блок
dependencyResolutionManagementфайлаsettings.gradleверхнего уровня:dependencyResolutionManagement { repositories { google() mavenCentral() } }Добавьте зависимость сервисов Google Play для
play-services-code-scannerSDK в файл build.gradle модуля – обычно этоapp/build.gradle:dependencies { implementation 'com.google.android.gms:play-services-code-scanner:16.1.0' }Вы можете настроить приложение так, чтобы сервисы Google Play автоматически скачивали модуль сканера на устройство при установке приложения из Google Play.
<application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="barcode_ui"/> ... </application>Вы также можете проверить доступность модуля сканера и запросить его скачивание через ModuleInstallClient API сервисов Google Play.
Если вы не включите скачивание модуля при установке или не запросите явное скачивание, а модуль сканера ещё не установлен для другого варианта использования, сервисы 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();

