API сканера кода Google предоставляет комплексное решение для сканирования кода, не требуя от вашего приложения запроса разрешения на доступ к камере, сохраняя при этом конфиденциальность пользователя. Это достигается делегированием задачи сканирования кода сервисам Google Play и возвратом в ваше приложение только результатов сканирования (Видео 1). Вся обработка изображений происходит на устройстве, и Google не хранит ни результаты, ни данные изображения. API поддерживает те же форматы кода, что и API сканирования штрихкодов ML Kit , и возвращает тот же объект Barcode .
Этот API идеально подходит для приложений, которым требуется бесперебойное сканирование кода без необходимости в специальном пользовательском интерфейсе или использовании камеры. Реализация полностью реализована в сервисах Google Play, что обеспечивает минимальное влияние на размер вашего приложения.
Начиная с версии 16.1.0, вы можете включить функцию автоматического масштабирования, чтобы сканер Google Code автоматически сканировал штрихкоды, находящиеся далеко от камеры. Когда пользователи наводят свои устройства на штрихкод, сканер автоматически распознаёт его и увеличивает масштаб. Это устраняет необходимость ручной настройки масштаба, делая сканирование штрихкодов быстрее, точнее и доступнее (см. Видео 2).
|  |  | 
| Видео 1. Интеграция со сканером кода Google | Видео 2. Эффект автомасштабирования | 
Для более сложных случаев использования, требующих специального пользовательского интерфейса, мы рекомендуем напрямую использовать API сканирования штрихкодов ML Kit .
Если у вас есть вопросы, вы хотите сообщить об ошибке или нуждаетесь в помощи, посетите страницу сообщества ML Kit .
Прежде чем начать
Чтобы подготовить свое приложение, выполните действия, описанные в следующих разделах.
Настройте свое приложение
- В файле верхнего уровня - settings.gradleвключите репозиторий Maven от Google и центральный репозиторий Maven в блок- dependencyResolutionManagement:- dependencyResolutionManagement { repositories { google() mavenCentral() } }
- Добавьте зависимость сервисов Google Play для SDK - play-services-code-scannerв файл сборки Gradle вашего модуля, который обычно называется- app/build.gradle:- dependencies { implementation 'com.google.android.gms:play-services-code-scanner:16.1.0' }
- Вы можете настроить свое приложение таким образом, чтобы сервисы Google Play автоматически загружали модуль сканера на устройство при установке вашего приложения из Play Store. - <application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="barcode_ui"/> ... </application>- Вы также можете явно проверить доступность модуля сканера и запросить загрузку через API ModuleInstallClient сервисов Google Play. - Если вы не включите загрузку модулей во время установки или не запросите явную загрузку, а модуль сканера еще не установлен для другого варианта использования, сервисы Google Play загрузят модуль сканера при первом использовании. 
Отсканируйте код
Для сканирования штрихкода выполните следующие шаги.
- Дополнительно: настройте сканер кодов. - Если вы знаете, какие форматы штрихкодов вы планируете считывать, вы можете повысить скорость детектора штрихкодов, настроив его на обнаружение только этих форматов. Например, чтобы обнаруживать только код Aztec и QR-коды, создайте объект - GmsBarcodeScannerOptionsкак показано в следующем примере:- Котлин- val options = GmsBarcodeScannerOptions.Builder() .setBarcodeFormats( Barcode.FORMAT_QR_CODE, Barcode.FORMAT_AZTEC) .build() - Ява- GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder() .setBarcodeFormats( Barcode.FORMAT_QR_CODE, Barcode.FORMAT_AZTEC) .build(); - По умолчанию автоматическое масштабирование отключено. Чтобы включить функцию автоматического масштабирования, начиная с версии 16.1.0, вызовите - enableAutoZoom()как показано в следующем примере кода.- Котлин- val options = GmsBarcodeScannerOptions.Builder() .setBarcodeFormats(...) .enableAutoZoom() // available on 16.1.0 and higher .build() - Ява- GmsBarcodeScannerOptions options = new GmsBarcodeScannerOptions.Builder() .setBarcodeFormats(...) .enableAutoZoom() // available on 16.1.0 and higher .build(); 
- Получите экземпляр - GmsBarcodeScanner, как показано в примере кода:- Котлин- val scanner = GmsBarcodeScanning.getClient(this) // Or with a configured options // val scanner = GmsBarcodeScanning.getClient(this, options) - Ява- GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(this); // Or with a configured options // GmsBarcodeScanner scanner = GmsBarcodeScanning.getClient(context, options); 
- Запросите сканирование кода, вызвав - startScan().- Котлин- scanner.startScan() .addOnSuccessListener { barcode -> // Task completed successfully } .addOnCanceledListener { // Task canceled } .addOnFailureListener { e -> // Task failed with an exception } - Ява- scanner .startScan() .addOnSuccessListener( barcode -> { // Task completed successfully }) .addOnCanceledListener( () -> { // Task canceled }) .addOnFailureListener( e -> { // Task failed with an exception }); 
- Обработайте полученный - Barcode.- Котлин- val rawValue: String? = barcode.rawValue - Ява- String rawValue = barcode.getRawValue(); 
