• スポンサードリンク

Android用にlibrealsenseをビルドしてみた(一応REALSENSE D435動いた)

Android REALSENSE

とっかかりは

せっかく買った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^)/
…(。・_・。)
…(。・_・。)

んっ?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)では動いたということで、今日はここまでにしといたろ
(-_-)/~~~

« »

  • スポンサードリンク