A biblioteca MediaPipe Framework Android Archive (AAR) é uma maneira conveniente de usar Framework do MediaPipe com o Android Studio e o Gradle. O MediaPipe Framework não publicar um AAR geral que pode ser usado por todos os projetos. Em vez disso, os desenvolvedores precisam para criar um destino mediapipe_aar() a fim de gerar um arquivo AAR personalizado para seu próprio projetos. Isso é necessário para incluir recursos específicos, como São necessárias calculadoras do MediaPipe para cada projeto.
Etapas para criar as AARs do framework do MediaPipe
Crie um destino mediapipe_aar().
No diretório MediaPipe, crie um novo destino mediapipe_aar() em um BUILD. . Você precisa descobrir quais calculadoras são usadas no gráfico e forneça as dependências da calculadora ao mediapipe_aar(). Por exemplo, para criar um AAR para um gráfico de detecção facial, coloque o código a seguir em mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example/BUILD.
load("//mediapipe/java/com/google/mediapipe:mediapipe_aar.bzl", "mediapipe_aar") mediapipe_aar( name = "mediapipe_face_detection", calculators = ["//mediapipe/graphs/face_detection:mobile_calculators"], )
Execute o comando de build do Bazel para gerar o AAR.
bazel build -c opt --strip=ALWAYS \ --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \ --fat_apk_cpu=arm64-v8a,armeabi-v7a \ --legacy_whole_archive=0 \ --features=-legacy_whole_archive \ --copt=-fvisibility=hidden \ --copt=-ffunction-sections \ --copt=-fdata-sections \ --copt=-fstack-protector \ --copt=-Oz \ --copt=-fomit-frame-pointer \ --copt=-DABSL_MIN_LOG_LEVEL=2 \ --linkopt=-Wl,--gc-sections,--strip-all \ //path/to/the/aar/build/file:aar_name.aar
Para a meta de AAR de detecção facial que fizemos na etapa 1, execute:
bazel build -c opt --strip=ALWAYS \ --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \ --fat_apk_cpu=arm64-v8a,armeabi-v7a \ --legacy_whole_archive=0 \ --features=-legacy_whole_archive \ --copt=-fvisibility=hidden \ --copt=-ffunction-sections \ --copt=-fdata-sections \ --copt=-fstack-protector \ --copt=-Oz \ --copt=-fomit-frame-pointer \ --copt=-DABSL_MIN_LOG_LEVEL=2 \ --linkopt=-Wl,--gc-sections,--strip-all \ //mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example:mediapipe_face_detection.aar # It should print: # Target //mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example:mediapipe_face_detection.aar up-to-date: # bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example/mediapipe_face_detection.aar
(Opcional) Salve as AARs no seu local preferido.
cp bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example/mediapipe_face_detection.aar /absolute/path/to/your/preferred/location
Etapas para usar um AAR do MediaPipe Framework no Android Studio com o Gradle
Inicie o Android Studio e acesse seu projeto.
Copie o AAR em app/libs.
cp bazel-bin/mediapipe/examples/android/src/java/com/google/mediapipe/apps/aar_example/mediapipe_face_detection.aar /path/to/your/app/libs/
Transformar app/src/main/assets e recursos de cópia (gráfico, modelo etc.) no app/src/main/assets.
Crie o gráfico binário do MediaPipe e copie os recursos no app/src/main/assets. Por exemplo, para o gráfico de detecção facial, você precisa criar e copiar o binário gráfico e o modelo tflite de detecção facial.
bazel build -c opt mediapipe/graphs/face_detection:face_detection_mobile_gpu_binary_graph cp bazel-bin/mediapipe/graphs/face_detection/face_detection_mobile_gpu.binarypb /path/to/your/app/src/main/assets/ cp mediapipe/modules/face_detection/face_detection_short_range.tflite /path/to/your/app/src/main/assets/
Modificar app/build.gradle para adicionar dependências do MediaPipe e AAR do MediaPipe.
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' // MediaPipe deps implementation 'com.google.flogger:flogger:latest.release' implementation 'com.google.flogger:flogger-system-backend:latest.release' implementation 'com.google.code.findbugs:jsr305:latest.release' implementation 'com.google.guava:guava:27.0.1-android' implementation 'com.google.protobuf:protobuf-javalite:3.19.1' // CameraX core library def camerax_version = "1.0.0-beta10" implementation "androidx.camera:camera-core:$camerax_version" implementation "androidx.camera:camera-camera2:$camerax_version" implementation "androidx.camera:camera-lifecycle:$camerax_version" // AutoValue def auto_value_version = "1.8.1" implementation "com.google.auto.value:auto-value-annotations:$auto_value_version" annotationProcessor "com.google.auto.value:auto-value:$auto_value_version" }
Siga nossos exemplos de apps Android para usar o MediaPipe no Android Studio para sua caso de uso de negócios. Se você estiver procurando um exemplo, um exemplo de detecção facial pode ser encontradas aqui e um exemplo de rastreamento multimão pode ser encontrado aqui.