日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android大疆飞控界面,DJI Android SDK 开发笔记(入门篇)

發(fā)布時間:2024/9/19 Android 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android大疆飞控界面,DJI Android SDK 开发笔记(入门篇) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

##大疆SDK開發(fā)筆記##

#1.文檔相關

2.Android SDK文檔
接入Android的SDK都在這部分,飛控相關的接口。

3.Android UX SDK文檔
大疆自定義的組件,已經(jīng)跟飛機關聯(lián),直接用即可。

4.官方Git庫
相關Demo都在里面

5.注冊成為開發(fā)者


[開發(fā)者注冊](https://account.dji.com/register?appId=dji_sdk&backUrl=https%3A%2F%2Fdeveloper.dji.com%2Fuser&locale=en_US)
注:每一個Android應用都要注冊APPkey,否則調(diào)用不了SDK。

6.Mobile-UXSDK-Android 結(jié)合的Demo(飛控界面)
地址下載

#2.飛行模擬器下載地址

#3.Android SDK

預覽大圖 #4.Android UX SDK

#5.Android Studio接入DIJ SDK步驟

5.1.app的build.gradle添加

implementation 'com.dji:dji-sdk:4.10'

implementation 'com.dji:dji-uxsdk:4.10'

compileOnly 'com.dji:dji-sdk-provided:4.10'

5.2.app的build.gradle的android中

packagingOptions {

doNotStrip "*/*/libdjivideo.so"

doNotStrip "*/*/libSDKRelativeJNI.so"

doNotStrip "*/*/libFlyForbid.so"

doNotStrip "*/*/libduml_vision_bokeh.so"

doNotStrip "*/*/libyuv2.so"

doNotStrip "*/*/libGroudStation.so"

doNotStrip "*/*/libFRCorkscrew.so"

doNotStrip "*/*/libUpgradeVerify.so"

doNotStrip "*/*/libFR.so"

doNotStrip "*/*/libDJIFlySafeCore.so"

doNotStrip "*/*/libdjifs_jni.so"

doNotStrip "*/*/libsfjni.so"

pickFirst 'lib/*/libstlport_shared.so'

pickFirst 'lib/*/libRoadLineRebuildAPI.so'

pickFirst 'lib/*/libGNaviUtils.so'

pickFirst 'lib/*/libGNaviMapex.so'

pickFirst 'lib/*/libGNaviData.so'

pickFirst 'lib/*/libGNaviMap.so'

pickFirst 'lib/*/libGNaviSearch.so'

pickFirst 'lib/*/libDJIFlySafeCore.so'

pickFirst 'lib/*/libdjifs_jni.so'

pickFirst 'lib/*/libsfjni.so'

exclude 'META-INF/rxjava.properties'

}

5.3 AndroidManifest.xml添加權限

android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"

tools:ignore="ProtectedPermissions" />

android:name="android.hardware.usb.host"

android:required="false" />

android:name="android.hardware.usb.accessory"

android:required="true" />

application里面

android:name="com.dji.sdk.API_KEY"

android:value="9a13028ed03500ad035980f9" />

android:name="dji.sdk.sdkmanager.DJIAoaControllerActivity"

android:theme="@android:style/Theme.Translucent">

android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"

android:resource="@xml/accessory_filter" />

#6.SDK初始化以及接口相關 *注:DJI的相關回調(diào)都在子線程里面!請勿在操作UI。

###6.1初始化SDK DJISDKManager.getInstance().registerApp(MainActivity.this.getApplicationContext(), new DJISDKManager.SDKManagerCallback() { @Override public void onRegister(DJIError djiError) { //子線程的回調(diào) if (djiError == DJISDKError.REGISTRATION_SUCCESS) { //SDK 注冊成功 啟動連接到飛機 DJISDKManager.getInstance().startConnectionToProduct(); } else { //SDK 注冊失敗 需要在子線程操作UI } Log.v(TAG, djiError.getDescription()); }

@Override

public void onProductDisconnect() {

Log.d(TAG, "onProductDisconnect");

notifyStatusChange();

}

@Override

public void onProductConnect(BaseProduct baseProduct) {

Log.d(TAG, String.format("onProductConnect newProduct:%s", baseProduct));

notifyStatusChange();

}

@Override

public void onComponentChange(BaseProduct.ComponentKey componentKey, BaseComponent oldComponent,

BaseComponent newComponent) {

//DJI SDK 連接發(fā)生改變

if (newComponent != null) {

newComponent.setComponentListener(new BaseComponent.ComponentListener() {

@Override

public void onConnectivityChange(boolean isConnected) {

Log.d(TAG, "onComponentConnectivityChanged: " + isConnected);

//DJI SDK 連接發(fā)生改變

notifyStatusChange();

}

});

}

Log.d(TAG, String.format("onComponentChange key:%s, oldComponent:%s, newComponent:%s",

componentKey,

oldComponent,

newComponent));

}

@Override

public void onInitProcess(DJISDKInitEvent djisdkInitEvent, int i) {

}

});

private void notifyStatusChange() {

if (mHandler == null) {

mHandler = new Handler(getMainLooper());

}

mHandler.removeCallbacks(updateRunnable);

mHandler.postDelayed(updateRunnable, 500);

}

###6.2登錄DJI賬號 private void DJIUserLogin() { UserAccountManager.getInstance().logIntoDJIUserAccount(MainActivity.this, new CommonCallbacks.CompletionCallbackWith() { @Override public void onSuccess(final UserAccountState userAccountState) { //登錄成功的回調(diào) 子線程回調(diào) } @Override public void onFailure(final DJIError djiError) { //登錄失敗的錯誤回調(diào) } }); }

###6.3獲取登錄DJI賬號相關的信息 private void getDjiLoginUserName() { UserAccountManager.getInstance().getLoggedInDJIUserAccountName(new CommonCallbacks.CompletionCallbackWith() { @Override public void onSuccess(final String s) { //s為登錄的用戶名 }

@Override

public void onFailure(final DJIError djiError) {

//獲取失敗 錯誤詳情請查看djierror類

}

});

}

*注:完成以上的注冊SDK、和登錄用戶名后,就能進入到正式DJI SDK開發(fā)了。

6.4 XML布局文件

android:id="@+id/fpvwidget"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_gravity="center"

custom:sourceCameraNameVisibility="false" />

android:id="@+id/fPVOverlayWidget"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_gravity="center" />

dji.ux.widget.FPVWidget
這個控件用戶顯示飛控的相機的畫面,DJI已經(jīng)綁定,直接用即可。
custom:sourceCameraNameVisibility="false"
此屬性用設置 畫面中間不顯示視頻來源的名稱。

這個控件用于在畫面中操作相機的移動等。

6.5獲取無人機的飛行狀態(tài)

*注:只有在SDK與與無人機連接成功,并且飛行的時候 才能有相應的高度經(jīng)緯度信息。

//設置監(jiān)聽

MApplication.getAircraftInstance().getFlightController().setStateCallback(new FlightControllerState.Callback() {

@Override

public void onUpdate(@NonNull final FlightControllerState flightControllerState) {

runOnUiThread(new Runnable() {

@Override

public void run() {

OnUpdateDJIView(flightControllerState);

}

});

}

});

private void OnUpdateDJIView(FlightControllerState flightControllerState) {

LocationCoordinate3D locationCoordinate3D = flightControllerState.getAircraftLocation();//飛機的3D位置

if (locationCoordinate3D == null) {

printLOG("locationCoordinate3D==null");

return;

}

StringBuffer stringBuffer = new StringBuffer();

stringBuffer.append("經(jīng)度:" + locationCoordinate3D.getLongitude()).append("\n");

stringBuffer.append("緯度:" + locationCoordinate3D.getLatitude()).append("\n");

stringBuffer.append("高度:" + locationCoordinate3D.getAltitude()).append(" m\n");

//tv_feiji_infos.setText(stringBuffer.toString());

}

##未完待續(xù)..

總結(jié)

以上是生活随笔為你收集整理的android大疆飞控界面,DJI Android SDK 开发笔记(入门篇)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美福利在线视频 | 人人妻人人澡人人爽精品欧美一区 | 青青伊人精品 | 日韩成人影视 | 久色精品视频 | 日本特黄视频 | 国产成人高清视频 | 午夜视频一区 | 黄色网址进入 | 国产区精品视频 | 亚洲精品日韩精品 | 欧美综合色 | 免费观看理伦片在线播放视频软件 | 黄色一级大片在线免费看国产一 | 久久色在线观看 | 国产视频一区二区三 | 丰满熟女人妻一区二区三 | 禁网站在线观看免费视频 | 黄免费在线观看 | 久久综合一本 | 9999久久久久 | 亚洲色图第一页 | 国产aⅴ一区二区三区 | 老熟妇仑乱视频一区二区 | 日韩中文在线播放 | 人人干人人爽 | 一区二区视频播放 | 欧亚av | 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | 国产高清视频在线播放 | 漂亮人妻被黑人久久精品 | 欧美激情亚洲色图 | 福利视频在线 | 哺乳喂奶一二三区乳 | 九九热re| 国产xxx在线观看 | 高h校园不许穿内裤h调教 | 91丨九色丨丰满 | 国产极品美女高潮无套在线观看 | 综合网在线 | a毛片在线| 四虎综合网 | 国产精品视频免费网站 | 色欲久久久天天天综合网精品 | 麻豆传媒在线观看 | 亚洲av综合色区无码一区爱av | 青青青网 | 在线观看视频你懂得 | yy色综合| 中文字幕国产日韩 | 黄三级| 一级中文字幕 | 欧美另类综合 | 好男人www社区在线视频夜恋 | 一边摸一边抽搐一进一出视频 | 久久综合久久久 | 日韩欧美一二三区 | 2021狠狠操 | 40一50一60老女人毛片 | 四虎网站在线播放 | 亚洲欧美日韩激情 | 欧美日韩精品国产 | av中文天堂 | 日本网站在线播放 | 一本一道久久综合狠狠老精东影业 | 中文字幕乱码一区二区三区 | 国产成人无码精品久久二区三 | 不卡av一区 | 国产伦一区二区 | 综合激情网 | 亚洲色婷婷一区二区三区 | 国内精品久久久久久久久久久 | 色网av| 成人网在线免费观看 | 6996电视影片免费看 | 中文字幕乱码人妻一区二区三区 | 在线一区二区三区视频 | 老司机深夜福利视频 | 极品五月天 | xxxxxx欧美| 日韩在线网 | 91国产中文字幕 | 色呦呦一区 | 中文精品视频 | 海角社区在线视频播放观看 | 久久成人在线视频 | 4438亚洲| 中文字幕第页 | 国产精品久久久久久久专区 | av自拍偷拍 | 丁香久久婷婷 | 最近的中文字幕 | 成人在线免费观看视频 | 亚洲色图20p | 久久精品视频3 | 在线国产网站 | 国产高清视频免费观看 | 操操操综合网 | 中文字幕在线播放第一页 |