DJIのドローンでSDKといえば、build 2018で発表されたWindows 10 drone SDKに注目しています。
しかしながら、こちらは2018年秋くらいのリリースということで、9月のMicrosoft Igniteあたりにならないと詳細は出てこないかもしれないですね。
Windows 10 drone SDKがくればWindows 10デバイスで動作する制御アプリも組みやすくなるので、例えば、HoloLensであったり、Windows MRであったり、での活用もしやすくなるので、本当に待ち遠しいですね。
とはいえ、秋まで何もしないのももったいないですから既存のSDKで何か作っていきたいと思います。
SDK利用時のシステム構成
.
作成したアプリはSDKを経由してDJIのリモートコントローラーと接続し、その先のドローンをコントロールすることになります。MAVIC AIRの場合は、SDKから直接ドローンにもWi-FiやBluetooth経由で接続可能です。
App Keyの生成
SDKを使うときにApp Keyeの指定が必要ですが、こちらは、DJIのサイトに登録が必要です。
https://developer.dji.com/mobile-sdk/
登録時の個人認証にはクレジットカードまたはスマホへのSMSへの認証コード送信のどちらかが利用可能です(一時期動いていない時期もありましたが、2018/6/22現在は動作しています)。
登録が完了したらUser Centerにて自分のアプリケーションを登録してコードを取得します。
SDKの入手
現在のSDKはいろいろな種類がでていますが、MAVIC AIRで使うのであればMobile SDKに注目です。
https://github.com/dji-sdk/Mobile-SDK-Android
https://github.com/dji-sdk/Mobile-SDK-iOS
SDK自体はどこにあるかといえば、Mobile-SDK-Android-master\Sample Code\gradle\wrapper\gradle-wrapper.jarがSDKになります。
Xamarin.AndroidでSDKを利用する
jarファイルをXamarinから呼び出すためには、バインディングライブラリを作成してjarファイルをまるっとXamarinのクラスライブラリでラッピングしてあげる必要があります。
jarファイルの追加
プロジェクトが生成できたら、Jarsフォルダを右クリックして[追加]-[既存の項目]メニューを選択します。
ダイアログが開いたらgradle-wrapper.jarを指定して、Jarsフォルダにgradle-wrapper.jarを追加します。
jarファイルのプロパティ指定
jarファイルに対するビルドアクションとして「EmbeddedJar」をしてしてdllにjarファイルを埋め込むようにします。
バインディングライブラリのビルドエラー対策
この状態でバインディングライブラリをビルドしてあげてエラーなくビルドできれば、バインディングライブラリのdllが完成します。
しかしながら、ここでエラーが出ないもののほうが少なく、gradle-wrapper.jarも当然のようにビルドエラーが発生します。
ビルドエラーは3件、すべてCS0535「〇〇はインターフェイスメンバー△△△を実装しません」です。
解決方法はいくつかありますが、今回出ているエラーは、「AbstractCommandLineConverter」、「AbstractCommandLineConverterInvoke」、「DownLoad」なので、主要な部分ではなさそうで使わないでもアプリ作れそうですから、とりあえずはなかったことにしてしまって、後日、必要だったらまた考えることにしたいと思います。
そのためには、Metadata.xmlに次の定義を入れておきます。
<remove-node path="/api/package[@name='org.gradle.wrapper']/class[@name='Download']" />
<remove-node path="/api/package[@name='org.gradle.cli']/class[@name='AbstractCommandLineConverter']" />
次回に続きます。