とっかかりは
せっかく買ったREALSENSE D435とT265を遊ばしておくのはもったいないのでサンプルを動かしてみようかと思って試してみた。Windows用とかはプレビルドのバイナリが有って簡単に試してみることができるし、GitHubのlibrealsenseリポジトリのソースからビルドするって記事もいくつか見つかるもののAndroidの記事はあんまり見当たらない。しょうがないので自分で調べてみようということで試してみました。
いろいろグルグルしてるとroot取らなあかんみたいなことを書いてある記事があるみたいなんだけど、librealsenseのdoc/android.mdによると、今はrootとらなくても行けるみたい\(^o^)/
でも
- IntelとしてはAndroidでの動作は厳密に検証できてない
- AndroidではT265をサポートしていない(T T)追加予定らしい
どないしてビルドすりゃええんじゃろ
リポジトリを見た感じcmakeだからコマンドラインからcmake(+オプション)とmake叩けばええんかなと思ったんだけど、今はAndroid Studio用のプロジェクトがあるからそれを使えと言うことらしい。
Android用のプロジェクトはwrappers/android下にあって、Android Studioでインポート可能なのは次の3種類。
- wrappers/android/build.gradle
これが今の本命っぽい - wrappers/android/examples/java_example/build.gradle
これはプレビルドのlibrealsense.aarをhttps://dl.bintray.com/intel-realsense/librealsenseから取得して実行するサンプル…ビルドして実行できたけどonResumeでクラッシュしてうまく動かなかった - wrappers/android/examples/native_example/build.gradle
これはhttps://dl.bintray.com/intel-realsense/librealsenseからzipファイルを取得してその中の共有ライブラリに自前のc++ソースをリンクさせて実行できるようにするサンプルらしんだけどzipファイルが取得できなくて実行できなかった?
wrappers/android/build.gradleをインポートしてみた
ということでこれ以降はwrappers/android/build.gradleをインポートして試すことに。実際のビルド手順はlibrealsense/wrappers/android/readme.mdに書いてあります。
wrappers/android/build.gradleをインポートすると下記の5つのサブモジュールがあります。
- librealsense
librealsense.soをビルドするためのモジュール - camera
REALSENSEにアクセスするためのヘルパークラスみたい - capture
REALSENSEからの映像を取得してGLSurfaceView(の子クラス)で表示するサンプルアプリ - playback
ファイルとして保存してあるREALSENSEからの映像を表示するためのサンプルアプリ - recording
REALSENSEからの映像を取得してGLSurfaceView(の子クラス)で表示するとともにファイルに出力するサンプルアプリ、playbackで再生できるみたい
ビルドするぜぇー
ということでビルドして実行してみよう、えいえい(^o^)/
…(。・_・。)
…(。・_・。)
1 2 3 4 5 6 |
SIMPLE: Setting Android configurations SIMPLE: Prepare RealSense SDK for Android OS (armeabi-v7a) ERROR: (include) Open File SIMPLE: CMake Error at ../../../CMake/install_config.cmake:18 (configure_file): SIMPLE: Configuring incomplete, errors occurred! |
んっ?syncでエラーになってる?cmake/3.10.2.4988404のconfig中にずっこけてるみたいやねんけどCMakeOutput.log見ても特にエラーらしきものはない?なんでやねん?
開発環境は次の通り。
- OSX 10.14.5
- Android Studio3.4.1
- NDK r19c(単独でダウンロードしてlocal.propertiesのndk.dirでパス指定)
うーんSDK Managerから入れたNDK大丈夫なんかなぁ(。・_・。)
とりあえずASはもう一度syncしろとは言ってないのでsync自体はできてると信じて、readme.txtどおりにlibrealsenseのassembleReleaseしてからcaptureを実行してみると…いけるじゃん、エラーにならずに実行できた\(^o^)/
動かしてみるぜぇー
よっしゃぁと思ってPixel3にD435繋いでみたんだけど、D435を認識してパーミッション要求までは正常に動いてそうなんだけど画面が真っ暗で何も表示されません(´・ω・`)
Pixel3はUSB3.1 Gen1 Type-Cだったはずなんだけどなぁ(。・_・。)
ちくしょぉーMoto G6 Plusはどうだ?・・・やっぱりあかんやん(。・_・。)(。・_・。)
ちくしょぉーちくしょぉーMoto Z2 Playならどうだ?
・・・
・・・
やった!!でたぁー\(^o^)/
うぅ〜むPixel3とMoto G6 PlusはAndroid9、Moto Z2 PlayはAndroid8だからなのかなぁ
まぁ少なくともMoto Z2 Play(Android8)では動いたということで、今日はここまでにしといたろ
(-_-)/~~~