tlxgg45o0bj64064222.gif (60.41 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
tlxgg45o0bj64064222.gif
2024-8-10 11:51 上傳
點(diǎn)擊上方藍(lán)色字體,關(guān)注我們
v5.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
獲取姿態(tài)信息
1、KeyManager調(diào)用
KeyManager類提供了一組方法來(lái)訪問(wèn)硬件模塊的參數(shù)和控制硬件模塊的行為,包括DJIKey的Value設(shè)置,Value獲取,Value監(jiān)聽(tīng)和Action執(zhí)行。通過(guò)KeyTools類提供的createKey方法可以更加方便的創(chuàng)建DJIKey實(shí)例。
下圖展示了使用KeyManager的接口判斷飛控正常連接并且GPS信號(hào)等級(jí)大于等于2級(jí),然后給飛行器設(shè)置返航點(diǎn),最后執(zhí)行返航操作的調(diào)用流程。
sw4dni0gdav64064322.png (75.18 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
sw4dni0gdav64064322.png
2024-8-10 11:51 上傳
此處是示例的操作方式,后面有在項(xiàng)目中使用的過(guò)程。
2、示例
//獲取飛機(jī)信息、云臺(tái)信息
private void get3DLocation() {
KeyManager.getInstance().listen(KeyTools.createKey(FlightControllerKey.KeyAircraftLocation3D), this, new CommonCallbacks.KeyListener() {
@Override
public void onValueChange(@Nullable LocationCoordinate3D oldValue, @Nullable LocationCoordinate3D newValue) {
if (newValue!=null){
lat = newValue.latitude;
lon = newValue.longitude;
high = newValue.altitude;
}
}
});
}
private void getAttitude() {
KeyManager.getInstance().listen(KeyTools.createKey(FlightControllerKey.KeyAircraftAttitude), this, new CommonCallbacks.KeyListener() {
@Override
public void onValueChange(@Nullable Attitude oldValue, @Nullable Attitude newValue) {
if (newValue!=null){
pitch = newValue.pitch;
roll = newValue.roll;
yaw = newValue.yaw;
}
}
});
}
private void getVelocity() {
KeyManager.getInstance().listen(KeyTools.createKey(FlightControllerKey.KeyAircraftVelocity), this, new CommonCallbacks.KeyListener() {
@Override
public void onValueChange(@Nullable Velocity3D oldValue, @Nullable Velocity3D newValue) {
if (newValue!=null){
velocity_X = newValue.x;
velocity_Y = newValue.y;
velocity_Z = newValue.z;
}
}
});
}
private void getIsFly(){
KeyManager.getInstance().listen(KeyTools.createKey(FlightControllerKey.KeyIsFlying), this, new CommonCallbacks.KeyListener[B]() {
@Override
public void onValueChange(@Nullable Boolean oldValue, @Nullable Boolean newValue) {
if (newValue!=null){
isFlying = newValue;
}
}
});
}
private void getGimbalAttitude() {
KeyManager.getInstance().listen(KeyTools.createKey(GimbalKey.KeyGimbalAttitude), this, new CommonCallbacks.KeyListener() {
@Override
public void onValueChange(@Nullable Attitude oldValue, @Nullable Attitude newValue) {
if (newValue!=null){
g_pitch = newValue.pitch;
g_roll = newValue.roll;
g_yaw = newValue.yaw;
}
}
});
}
private void getPower() {
KeyManager.getInstance().listen(KeyTools.createKey(BatteryKey.KeyChargeRemainingInPercent), this, new CommonCallbacks.KeyListener[I]() {
@Override
public void onValueChange(@Nullable Integer oldValue, @Nullable Integer newValue) {
power = newValue;
}
});
}
private void getTemperature() {
KeyManager.getInstance().listen(KeyTools.createKey(BatteryKey.KeyBatteryTemperature), this, new CommonCallbacks.KeyListener() {
@Override
public void onValueChange(@Nullable Double oldValue, @Nullable Double newValue) {
temperature = newValue;
}
});
}
get3DLocation()方法為獲取飛機(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)行獲;
2
多媒體使用
1、Sample介紹
拍照、錄像是無(wú)人機(jī)的重要功能,對(duì)拍攝的照片、視頻等多媒體文件進(jìn)行管理也就必不可少。多媒體文件的管理包括訪問(wèn)飛機(jī)存儲(chǔ)空間內(nèi)的多媒體文件資源、獲取多媒體文件列表與列表狀態(tài)、視頻文件播放等。
下圖為完整的接口展示以及接口調(diào)用流程示例。
多媒體文件管理調(diào)用流程
goyu2fqko4t64064422.png (110.77 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
goyu2fqko4t64064422.png
2024-8-10 11:51 上傳
視頻文件播放調(diào)用流程
|