下面就把開發過程中需要注意的一些地方總結整理一下,以免後人踩坑。
官方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二次開發 看懂同事的 加入自己的需求開發 此處主要參考菜鳥教程,好快...