Google 코드 스캐너 (베타)

Google 코드 스캐너 API는 앱에서 사용자 권한을 유지하면서 카메라 권한을 요청하지 않고도 코드를 스캔할 수 있는 완전한 솔루션을 제공합니다. 이 작업은 Google Play 서비스에 코드를 스캔하고 앱에 스캔 결과만 반환하는 작업을 위임하여 실행합니다. 모든 이미지 처리는 기기에서 실행되며 Google은 결과 또는 이미지 데이터를 저장하지 않습니다. API는 ML Kit 바코드 스캔 API와 동일한 코드 형식을 지원하고 동일한 바코드 객체를 반환합니다.

이 API는 코드만 스캔하면 되고 맞춤 UI나 카메라 환경이 필요하지 않은 앱에 적합합니다. 구현은 전적으로 Google Play 서비스 내에 있으므로 앱 크기에 큰 영향을 미치지 않습니다. 맞춤 UI가 필요한 더 복잡한 사용 사례의 경우 ML Kit 바코드 스캔 API를 직접 사용하세요.

궁금한 점이 있거나 버그를 신고하거나 도움이 필요한 경우 ML Kit 커뮤니티 페이지를 확인하세요.

시작하기 전에

앱을 준비하려면 다음 섹션의 단계를 완료합니다.

앱 구성

  1. 최상위 수준 settings.gradle 파일의 dependencyResolutionManagement 블록 아래에 Google Maven 저장소Maven 중앙 저장소를 포함합니다.

    dependencyResolutionManagement {
      repositories {
        google()
        mavenCentral()
      }
    }
    
  2. 모듈의 Gradle 빌드 파일(일반적으로 app/build.gradle)에 play-services-code-scanner SDK의 Google Play 서비스 종속 항목을 추가합니다.

    dependencies {
      implementation 'com.google.android.gms:play-services-code-scanner:16.0.0-beta3'
    }
    
  3. 앱이 Play 스토어에서 설치되는 동안 Google Play 서비스에서 기기에 스캐너 모듈을 자동으로 다운로드하도록 앱을 구성할 수 있습니다.

    <application ...>
      ...
      <meta-data
          android:name="com.google.mlkit.vision.DEPENDENCIES"
          android:value="barcode_ui"/>
      ...
    </application>
    

    스캐너 모듈 사용 가능 여부를 명시적으로 확인하고 Google Play 서비스 ModuleInstallClient API를 통해 다운로드를 요청할 수도 있습니다.

    설치 시간 모듈 다운로드를 사용 설정하거나 명시적 다운로드를 요청하지 않은 경우 Google Play 서비스는 처음 사용할 때 스캐너 모듈을 다운로드합니다(아직 다른 사용 사례용으로 설치되지 않은 경우).

코드 스캔

1. (선택사항) 코드 스캐너 구성

읽으려는 바코드 형식을 알고 있는 경우 해당 형식만 감지하도록 구성하여 바코드 인식기의 속도를 높일 수 있습니다. 예를 들어 Aztec 코드와 QR 코드만 감지하려면 다음 예와 같이 GmsBarcodeScannerOptions 객체를 빌드합니다.

Kotlin

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();

2. GmsBarcodeScanner의 인스턴스 가져오기

Kotlin

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);

3. startScan()을 호출하여 코드 스캔 요청

Kotlin

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
        });

4. 결과 바코드 처리

Kotlin

val rawValue: String? = barcode.rawValue

자바

String rawValue = barcode.getRawValue();