Android のカメラを使って、機械学習した物体を検出させます。
今回はサンプルを動かせるようにして、次回は自分で機械学習させたモデルで試してみたいと思います。
環境
- Windows 11 Home 21H2 22000.556
- Android Studio Bumblebee | 2021.1.1 Patch 1
準備
サンプルプロジェクトをダウンロード、展開しておきます。
こちら からサンプルプロジェクトをダウンロード。

ダウンロードできたら展開しておきます。

手順
プロジェクトの読み込み
Android Studio でプロジェクトを読み込みます。

いろいろサンプルがありますが、今回使うサンプルは「object_detection」になります。
展開したフォルダーから次のフォルダーを辿って Androidプロジェクト を選択し開きます。
「.\examples-master\lite\examples\object_detection\android」

プロジェクトを開いた直後はいろいろダウンロードや設定が入るので、右下が落ち着くまでしばらく待ちます。

APKビルド
右下が落ち着いたら、APKビルドをします。
Buildメニューから「Build Bundle / APK > Build APK」と選択していくと APKビルドができます。

ビルドエラー
今回一番手こずったのは、この部分になります。
Errors while building APK. You can find the errors in the 'Messages' view.

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

エラーを読むと「Gradle 8.0 との互換性がないから無理」って言っていますね。
つまり Gradle 8.0 では使えない関数が使われているってことになります。
もう少し上にスクロールすると、エラーとなった関数が表示されています。
Execution failed for task ':lib_task_api:compileDebugJavaWithJavac'.
> Failed to calculate the value of task ':lib_task_api:compileDebugJavaWithJavac' property 'options.generatedSourceOutputDirectory'.
> Querying the mapped value of map(java.io.File property(org.gradle.api.file.Directory, fixed(class org.gradle.api.internal.file.DefaultFilePropertyFactory$FixedDirectory, D:\android\examples-master\lite\examples\object_detection\android\lib_task_api\build\generated\ap_generated_sources\debug\out)) org.gradle[email protected]6f3ff1b9) before task ':lib_task_api:compileDebugJavaWithJavac' has completed is not supported

今回は「:lib_task_api:compileDebugJavaWithJavac」が原因でビルドできなかったみたいです。
Gradleバージョン確認
プロジェクトが使ってるGradleバージョンを確認します。
Fileメニューの「Project Structure」をクリックするとGradleバージョンを確認することができます。

今回は Gradle 7.4 が使われていました。

Gradleバージョン 8.0 はまだリリースされていないので、今回はプラグインバージョンを最新まで上げて対応することにしました。
アルファ版やベータ版は使いたくないため、今最新の「7.1.2」に変更します。

再度ビルドをすると、エラーも出ずにビルドできるようになります。

実行
USBで端末をつなぐと、実機で動作確認することができます。

カメラでいろいろなものを表示させると、リアルタイムで何か表示されます。

おわりに
object_detectionのプロジェクト内に、ラズパイ用のプロジェクトもあったので、いつか挑戦してみたいです。
追記
物体検出モデル作成の記事を書きました。興味がある方、ぜひご覧ください。
