|
u0dbekljdzp640339230.gif (60.41 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
u0dbekljdzp640339230.gif
2024-9-2 15:54 上傳
+ ~3 U7 x4 J2 Z; `, o點(diǎn)擊上方藍(lán)色字體,關(guān)注我們
$ o( U/ O5 [7 T/ O. a r S0 U1 r( \
. r* Z1 y I8 c/ O3 ?6 }0 L7 Xv5.x版本的功能與v4.x基本相同,都是獲取飛機(jī)的姿態(tài)信息、獲取無(wú)人機(jī)多媒體文件、操作多媒體文件、航線規(guī)劃等。不過(guò)在上一章節(jié)中也大致說(shuō)了一些兩個(gè)版本的中API的差別,下面是根據(jù)一些API使用所完成的一些功能,因?yàn)轫?xiàng)目原因只能提供部分代碼供參考,后續(xù)如果有這方面需求的小伙伴可以對(duì)其進(jìn)行開(kāi)發(fā)指導(dǎo)。
1 s" r% r! Z" Z) e8 U w1
5 S) b" J# N0 s) ?3 n獲取姿態(tài)信息
( g& L# E' A/ q1 B1、KeyManager調(diào)用6 Z8 N8 ^( s& h0 w) ?+ c, S
6 r: O6 U$ Q; |9 a
KeyManager類提供了一組方法來(lái)訪問(wèn)硬件模塊的參數(shù)和控制硬件模塊的行為,包括DJIKey的Value設(shè)置,Value獲取,Value監(jiān)聽(tīng)和Action執(zhí)行。通過(guò)KeyTools類提供的createKey方法可以更加方便的創(chuàng)建DJIKey實(shí)例。* ?2 j% p2 C: k& `; a
下圖展示了使用KeyManager的接口判斷飛控正常連接并且GPS信號(hào)等級(jí)大于等于2級(jí),然后給飛行器設(shè)置返航點(diǎn),最后執(zhí)行返航操作的調(diào)用流程。
# K, G6 I8 ?% n1 S) T
5iqpab3kvyg640339330.png (75.18 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
5iqpab3kvyg640339330.png
2024-9-2 15:54 上傳
! a" [/ L+ T( F# j: J) \
此處是示例的操作方式,后面有在項(xiàng)目中使用的過(guò)程。
f# Q* E6 n0 N3 p. `2 ?: `& e! y, \( I
2、示例6 W! c# W. ]8 M5 t$ P7 O9 X
- v, H8 U8 ^! J1 B
//獲取飛機(jī)信息、云臺(tái)信息5 [" s" \1 o5 ]3 H! i
private void get3DLocation() {- _' d. z# B3 I- D0 K
KeyManager.getInstance().listen(KeyTools.createKey(FlightControllerKey.KeyAircraftLocation3D), this, new CommonCallbacks.KeyListener() {% H8 R8 Z& O+ J R
@Override# Z) y+ L8 w2 c; m j0 Q( |! ?
public void onValueChange(@Nullable LocationCoordinate3D oldValue, @Nullable LocationCoordinate3D newValue) {- N, w; J, r A6 T1 ~
if (newValue!=null){
. A2 m% Y! P* r0 \ lat = newValue.latitude;" j; Y0 D9 R; E7 R% c H9 i' k
lon = newValue.longitude;
- V6 L2 g8 Q8 z1 b, M. u3 r: ^ high = newValue.altitude;
& @0 \0 | {0 j0 v; R4 I }" T, t' V1 ^( J7 V8 I- E* a( q
}4 o8 E& O: R V5 l' @
});4 b! s: C9 q: I/ k5 _. N0 f7 c
}6 ?: Z& |! y3 j/ z
private void getAttitude() {$ m' x- o. i( d1 D
KeyManager.getInstance().listen(KeyTools.createKey(FlightControllerKey.KeyAircraftAttitude), this, new CommonCallbacks.KeyListener() {
9 N9 X$ E9 k9 f* q: W% H& _ @Override% i9 O. S3 N5 P0 B- J
public void onValueChange(@Nullable Attitude oldValue, @Nullable Attitude newValue) {
" N9 [$ U7 e4 w/ g( A8 ]# A; d) x if (newValue!=null){
+ v; [' ?' p, R6 y. M" V pitch = newValue.pitch;" ?) [& C7 N- U4 y
roll = newValue.roll;9 Q2 C1 \4 l8 m8 h, E
yaw = newValue.yaw;$ J/ s7 E) U- G5 s( O- Q
}: `& a( _9 K3 u0 V
}
9 B3 P' N1 D) x# @9 @ });! ]% ?$ ^! g g2 Q o
}
5 c: [, Z8 X$ y/ ] private void getVelocity() {5 t5 H; V4 H$ \. @( X7 ~+ g; Q$ H
KeyManager.getInstance().listen(KeyTools.createKey(FlightControllerKey.KeyAircraftVelocity), this, new CommonCallbacks.KeyListener() {
. ^" B$ P, ^6 n/ I @Override! L- G! q" t% ^
public void onValueChange(@Nullable Velocity3D oldValue, @Nullable Velocity3D newValue) {. Y) j& V% W3 ?+ p) D, K
if (newValue!=null){
' j0 e& Y0 d# P' ~ velocity_X = newValue.x;
" C, w; [: l, P1 C& ]! {- m/ ` velocity_Y = newValue.y;. L( u5 I$ N6 y9 W
velocity_Z = newValue.z;
: ~& g, F1 X' v4 I5 v) K }
" H, ^9 A5 J& O5 ]. A) K0 H }3 x2 `/ ~ n; g+ C
});
" d) g0 v: A4 H& E }1 b$ r6 i/ D" Q. o: W4 q$ N
private void getIsFly(){
9 U( Y1 ^; ]7 {8 k KeyManager.getInstance().listen(KeyTools.createKey(FlightControllerKey.KeyIsFlying), this, new CommonCallbacks.KeyListener[B]() {
0 M2 ]( |' m5 C @Override" @" b1 l3 [; a
public void onValueChange(@Nullable Boolean oldValue, @Nullable Boolean newValue) {, L+ [/ L& s; u @7 }' Y
if (newValue!=null){; {% h& V# e* _8 G. O$ T
isFlying = newValue;
& z* c* b) i! B }
/ V" v$ ]: d% G }
3 w& Q! p* @' w( O2 H, V; C( d- } });6 x5 W X7 c A2 z8 `
}
# r" l" }0 q0 s) P- R6 U7 U private void getGimbalAttitude() {+ G+ n; j/ x6 G" i1 c. a! I1 g
KeyManager.getInstance().listen(KeyTools.createKey(GimbalKey.KeyGimbalAttitude), this, new CommonCallbacks.KeyListener() {
% }5 ~, Y, G! F" X: g @Override
% d( d. O. e5 o, _ public void onValueChange(@Nullable Attitude oldValue, @Nullable Attitude newValue) {6 G2 L6 y) Z% C4 [: u3 a2 _: g& P
if (newValue!=null){ {3 D7 Q! s% k) i
g_pitch = newValue.pitch;
7 J3 e/ C' u8 T" C2 @7 v g_roll = newValue.roll;0 P+ x, {6 Q6 q# A& O! `7 n
g_yaw = newValue.yaw;
8 ?4 ~5 A0 t4 z. f4 D }
4 `; b( a8 q Y$ P$ e7 a }# u8 J5 y5 E, ~3 c m' t1 V/ H' h
});
" i" Z+ j0 D8 V7 y" _) g! o7 U }6 v3 T/ _% f! P; T$ L* T1 A
private void getPower() {( a8 ?8 V( H6 Z+ `: ]2 H
KeyManager.getInstance().listen(KeyTools.createKey(BatteryKey.KeyChargeRemainingInPercent), this, new CommonCallbacks.KeyListener[I]() {
) T) H4 z$ B' ~4 k @Override: `- U; S& r* {6 P
public void onValueChange(@Nullable Integer oldValue, @Nullable Integer newValue) {
; ]4 G9 k6 }" K5 Z: ?0 a power = newValue;
8 ?3 k" H7 _. @! A& N, R }: I1 u+ G: g6 h9 m5 |2 z) o
});" O' W$ \) |8 I2 v4 g* H
}( ]% ]9 u e3 ^1 l
private void getTemperature() {
9 N! O' H2 O$ Y$ \. x KeyManager.getInstance().listen(KeyTools.createKey(BatteryKey.KeyBatteryTemperature), this, new CommonCallbacks.KeyListener() {: C' E9 N' T0 |. O/ [( o8 E
@Override% ]) N/ }" q, H8 U9 s+ n' M9 ?: R
public void onValueChange(@Nullable Double oldValue, @Nullable Double newValue) {
( E6 _3 l' Q/ X( D& z% O: J temperature = newValue;
: [. a. z' t1 t" I2 }8 Z2 A$ s }" F2 i3 g+ J. g
});( d+ h7 }( W x. S
}
. w1 n. [+ \; Dget3DLocation()方法為獲取飛機(jī)經(jīng)緯度信息。getAttitude()方法獲取飛機(jī)的姿態(tài)信息(分別是航偏角、旋轉(zhuǎn)角、俯仰角)。getVelocity()方法獲取飛機(jī)的飛行速度(分別是X、Y、Z三個(gè)方向的速度值)。getIsFly()方法獲取當(dāng)前飛機(jī)的狀態(tài)值(是否正在飛行)。getGimbalAttitude()方法獲取鏡頭的姿態(tài)信息(分別是航偏角、旋轉(zhuǎn)角、俯仰角)。getPower()獲取飛機(jī)的電池電量getTemperature()獲取飛機(jī)的電池溫度onValueChange()方法為1秒執(zhí)行10次,這個(gè)可以根據(jù)后續(xù)要求進(jìn)行獲;
" k% ?8 G0 q, C! R5 ]( S
8 q, y+ K! a* K# V! P
$ {+ G0 L1 l# p" T+ U2
; T C) k S) _5 Y. o1 K多媒體使用 R! D6 k. M7 d
1、Sample介紹
5 @' A' m4 b# r# G4 b: [. N9 m/ u
- g+ x; U2 g3 X2 o$ ~拍照、錄像是無(wú)人機(jī)的重要功能,對(duì)拍攝的照片、視頻等多媒體文件進(jìn)行管理也就必不可少。多媒體文件的管理包括訪問(wèn)飛機(jī)存儲(chǔ)空間內(nèi)的多媒體文件資源、獲取多媒體文件列表與列表狀態(tài)、視頻文件播放等。4 c+ i0 A6 N+ X0 q. G
下圖為完整的接口展示以及接口調(diào)用流程示例。1 \3 R7 i% g6 D! A0 u
多媒體文件管理調(diào)用流程
4 b7 ^( ?! r# S8 C, @7 f6 L" Y
fyfccoh3yao640339431.png (110.77 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
fyfccoh3yao640339431.png
2024-9-2 15:54 上傳
視頻文件播放調(diào)用流程
; G% e3 z$ D' m |
|