【Androidアプリ開発】 USBカメラの映像をキャプチャする方法
この記事では、AndroidアプリにUSBカメラからのキャプチャ機能を実装する方法を紹介します。
監視カメラアプリなど、カメラを利用するアプリを開発する際に、Webカメラに対応したくなることがあります。
AndroidデバイスにはUSB端子があるため、Webカメラを取り付けることは可能です。
しかし、そのようにして取り付けたWebカメラAndroidの標準APIで認識されない場合が多く、素直に利用することができません。
そこで、外部ライブラリを利用してWebカメラからのキャプチャに対応します。
開発環境
筆者が動作確認をした環境は以下の通りです。
- デバイス: Google Pixel 8
- OS: Android 14
USBカメラは以下のデバイスを利用しました。
USB Type-Cに直接繋ぐことができるのでGoogle Pixelと相性が良いです。
USBに対応しているカメラであれば恐らく他のデバイスでも利用は可能だと思います。
環境構築
Android Studioでプロジェクトを作成してください。
今回はシンプルな機能を実装することが目的のため、テンプレートは「Empty Project」で問題ありません。
依存ライブラリのインストール
こちらの外部ライブラリを利用します。
まず、ライブラリの取得先にJitPackを追加します。
settings.gradle.ktsに以下の記述を追加します。
続いて、アプリのbuild.gradle.ktsに以下の記述を追加し、gradle syncしてください。
バージョンは適宜最新のものを指定してください。
Android Studioが外部ライブラリをダウンロードしてきます。
これで依存ライブラリのインストールは完了です。
カメラの映像を描画するUIを追加する
カメラからキャプチャした映像を描画するレイアウトを作成します。
activity_main.xmlに以下の記述を追加してください。
View Bindingを有効にする
今回利用するライブラリはView Bindingと相性が良いため、有効にします。
build.gradle.ktsに以下の記述を追加し、gradle syncしてください。
USBカメラから映像をキャプチャする
CameraFragmentを継承したクラス(DemoFragment.kt)を作成します。
続いて、MainActivity.ktにDemoFragmentを利用するコードを記述します。
アプリを起動し、USBカメラの映像が画面が描画されれば完成です。
おわりに
USBカメラに対応することで、スマートフォン本体に対してカメラをある程度離すことができるようになります。
アプリ開発時のTipsとして活用してください。