基於大疆無人機SDK二次開發

2022-06-05 22:51:12 字數 2850 閱讀 4976

下面就把開發過程中需要注意的一些地方總結整理一下,以免後人踩坑。

官方demo

這裡有很多 demo,不同的demo用於介紹不同的功能點,切記在開發的時候要以demo中的**為準,不要以官方文件為準,按照官方文件你可能無法把程式跑起來。

**在**裡你可以了解相關產品的特性,進行更好的開發

文件文件還是要看一下的,特別是對沒有接觸過無人機的新手來說。文件都是英文的,其實很容易看懂。實在不懂可以通過谷歌瀏覽器的翻譯功能,可以很好的把文件翻譯成中文。建議原文和中文一起檢視。

apiapi 可以作為在開發過程中的補充,對那個方法不了解,就直接到這裡搜尋就可以了,api 的搜尋功能做的很強大,你只需要把不同的方法名或者類名輸入就可以了。api 裡面的解釋相對來說還是比較詳細的。

進入正文

再說具體一些,文件中的這裡是不全的,你需要在依賴中新增:

packagingoptions 

來代替文件中寫出的那幾種

好了,依賴也引入成功了,下面就可以進行開發了。

這裡就簡單介紹一下sdk的使用步驟把,重點是接受需要特別注意地方。

首先你需要註冊一下 sdk,在註冊成功的**裡面再調登入

if (isregistrationinprogress.compareandset(false, true)) 

}@override

public void onproductdisconnect()

@override

public void onproductconnect(baseproduct baseproduct)

@override

public void oncomponentchange(baseproduct.componentkey componentkey,

basecomponent oldcomponent,

basecomponent newcomponent)

@override

public void oninitprocess(djisdkinitevent djisdkinitevent, int i)

@override

public void ondatabasedownloadprogress(long l, long l1)

}));

}

這一步需要注意的是:

好了,上面步驟完畢後,就是等待無人機連線了,無人機連線的時候會觸發**,等連線上無人機我們就可以進行真正的開發了。

進行開發的時候主要就是利用了 sdk 中的幾個類,它們的方法很好理解。

djisdkmanager

這個類非常關鍵,它是使用 sdk 和 大疆無人機的入口。

註冊 sdk、獲取無人機物件都是通過這個類來實現的。

通過sjisdkmanager獲取到無人機物件(aircraft)後,就可以利用aircraft來獲取無人機的各個元件對應的物件了,比如:飛控flightcontroller(這是無人機的核心元件,控制無人機的飛行,關於無人機的位置資訊,狀態資訊等)、電池battery、相機camera、雲台gimbal、遙控器remotecontroller等等。詳見 component classes

同時我們還可以引入ux sdk位址來幫助我們進行快速的開發。

ux sdk 主要是提供了一些執行緒的控制項,這些控制項我們放到 ui 中就可以使用,而且不是靜態的 ui ,是有資料的,不需要我們進行任何處理。

比如:dji.ux.widget.fpvwidget元件,你只需要放到布局中,就可以顯示無人機相機的畫面。

注意內容

進行直播:

if (!djisdkmanager.getinstance().getlivestreammanager().isstreaming()) 

}.start();

}

獲取無人機位置的方法

// 主動獲取

aircraft aircraft1 = (aircraft) djisdkmanager.getinstance().getproduct();

flightcontrollerstate state = aircraft1.getflightcontroller().getstate();

l.e("==altitude:" + state.getaircraftlocation().getaltitude() + "latitude:" + state.getaircraftlocation().getlatitude() + "longitude:");

// 當然你可以註冊**函式

void setstatecallback(@nullable flightcontrollerstate.callback callback);

布局名字坑

布局中不要出現dialog_login的名字,因為這個名字在大疆的 sdk 中已經有了,當你在新增乙個dialog_login名字的時候,呼叫 登入 api 就會報空指標錯誤了。

如果出現莫名其妙的布局空指標異常,很有可能是我們自己的布局和大疆 sdk 中的布局名字重複了。

**大多不在主線程

大疆 sdk 中的**大多數都不是在主線程這一點需要注意

基於leveldb,levigo做二次開發

leveldb是乙個c 庫,它有提供標準的c介面,標頭檔案在include leveldb c.h中 開發過程,以新增乙個簡單的計算功能為例 修改leveldb原始碼 在include leveldb c.h中新增以下宣告 extern int andre add const int a,const...

ccflow工作流程引擎二次開發SDK(部分公布)

第七章 二次開發sdk 7.0 開發與實施部署 7.0.1什麼情況下需要二次開發?工作流引擎執行在web前台程式 底座 上,如果你不需要底座程式的支援,您需要呼叫.dll介面完成您的功能。就需要把bp.wfv4.dll引用到您的解決方案裡面。7.0.2二次開發前要準備的工作。1,要把基礎的web.c...

《專注學習》基於C 的CAD二次開發

三 基於c 的cad二次開發 依舊因為專案需要,需要cad二次開發下,已經有優秀的同事做了一部分功能了,也已經有比較成熟的 因為我這邊專案的需要,得自己開發的相應功能,只能自己慢慢學起來了 c 語言的了解 了解如何利用c 進行cad二次開發 看懂同事的 加入自己的需求開發 此處主要參考菜鳥教程,好快...