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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

大疆 DJI Mobile SDK 开发:模拟器调试

發(fā)布時(shí)間:2023/12/31 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大疆 DJI Mobile SDK 开发:模拟器调试 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

創(chuàng)建飛行控制器界面

1.新建Activiity

2.MainActivity

activity_main.xml

MainActivity.java

3.FlightActivity

activity_flight.xml

FlightActivity.java

4.AndroidManifest

DJI Mobile SDK的回調(diào)方法

?起飛、降落與返航的實(shí)現(xiàn)

獲取控制器

API Reference:FlightController()

起飛與取消起飛

API Reference:startTaskoff()、cancelTaskoff()

降落與取消降落

API Reference:startLanding()、cancelLanding()

返航與取消返航

API Reference: startGoHome()、cancelGoHome()

返航高度的設(shè)置與獲取

?API Reference: setGoHomeHeightInMeters()、getGoHomeHeightInMeters()

自定義提示

?


創(chuàng)建飛行控制器界面

1.新建Activiity

????????在 “com.dji.importSDKDemo” 包上單擊右鍵,新建一個(gè)名稱(chēng)為 FlightActivity、布局名為 activity_flight 的活動(dòng)。

2.MainActivity

activity_main.xml

????????在 MainActivity 布局文件 activity_main.xml 中添加一個(gè)名為 “飛行控制器” 的按鈕

<Buttonandroid:id="@+id/fight_controller"android:layout_width="match_parent"android:layout_height="wrap_content"app:layout_constraintTop_toTopOf="parent"app:layout_constraintBottom_toBottomOf="parent"android:layout_marginTop="15dp"android:text="飛行控制器"android:textSize="25sp"/>

MainActivity.java

????????要在 MainActivity 中實(shí)現(xiàn)單擊 “飛行控制器” 按鈕跳轉(zhuǎn)到 FlightActivity 頁(yè)面的代碼,即在 MainActivity.java 文件中的 initUI() 函數(shù)的最后加入如下代碼

private void initUI() {…………Button fight_controller = (Button) findViewById(R.id.fight_controller);fight_controller.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {if (checkDroneConnection() == false) {return;}//彈出FlightActivityIntent i = new Intent(MainActivity.this, FlightActivity.class);startActivity(i);}});}

? ? ? ? ?在單擊 “飛行控制器” 按鈕跳轉(zhuǎn)到 FlightActivity 頁(yè)面前,需要判斷應(yīng)用程序激活注冊(cè)、狀態(tài),以及無(wú)人機(jī)綁定、連接等是否正常。故在 initUI() 方法后添加 checkDroneConnection() 方法來(lái)判斷,代碼如下

private boolean checkDroneConnection() {//應(yīng)用程序激活管理器AppActivationManager mgrActivation = DJISDKManager.getInstance().getAppActivationManager();//判斷應(yīng)用程序是否注冊(cè)if (!DJISDKManager.getInstance().hasSDKRegistered()) {showToast("應(yīng)用程序未注冊(cè)");return false;}//判斷應(yīng)用程序是否激活if (mgrActivation.getAppActivationState() != AppActivationState.ACTIVATED) {showToast("應(yīng)用程序未激活");return false;}//判斷無(wú)人機(jī)是否綁定if (mgrActivation.getAircraftBindingState() != AircraftBindingState.BOUND) {showToast("無(wú)人機(jī)未綁定");return false;}//判斷無(wú)人機(jī)是否連接//if ((DJISDKManager.getInstance().getProduct() == null) || !(DJISDKManager.getInstance().getProduct().isConnected())) {BaseProduct product = DJISDKManager.getInstance().getProduct();if (product == null || !product.isConnected()) {showToast("無(wú)人機(jī)連接失敗");return false;}return true;}

3.FlightActivity

activity_flight.xml

????????在 FlightActivity UI界面添加名為 “起飛”、“取消起飛”、“降落”、“取消降落”、“設(shè)置返航高度”、“獲取返航高度”、“返航”、“取消返航” 按鈕,界面與代碼如下:

FlightActivity UI界面 <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_margin="10dp" ><TextViewandroid:id="@+id/DJI_fly"style="?android:listSeparatorTextViewStyle"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="飛行控制"android:textSize="15sp"app:layout_constraintTop_toTopOf="parent"android:layout_marginTop="10dp" /><Buttonandroid:id="@+id/btn_takeoff"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="起飛"app:layout_constraintTop_toBottomOf="@+id/DJI_fly"android:layout_marginTop="10dp"android:textSize="25sp"android:padding="15dp" /><Buttonandroid:id="@+id/btn_takeoff_cancel"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="取消起飛"app:layout_constraintTop_toBottomOf="@+id/btn_takeoff"android:layout_marginTop="10dp"android:textSize="25sp"android:padding="15dp" /><Buttonandroid:id="@+id/btn_landing"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="降落"app:layout_constraintTop_toBottomOf="@+id/btn_takeoff_cancel"android:layout_marginTop="10dp"android:textSize="25sp"android:padding="15dp" /><Buttonandroid:id="@+id/btn_landing_cancel"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="取消降落"app:layout_constraintTop_toBottomOf="@+id/btn_landing"android:layout_marginTop="10dp"android:textSize="25sp"android:padding="15dp" /><Buttonandroid:id="@+id/btn_set_home_height"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="設(shè)置返航高度"app:layout_constraintTop_toBottomOf="@+id/btn_landing_cancel"android:layout_marginTop="10dp"android:textSize="25sp"android:padding="15dp" /><Buttonandroid:id="@+id/btn_get_home_height"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="獲取返航高度"app:layout_constraintTop_toBottomOf="@+id/btn_set_home_height"android:layout_marginTop="10dp"android:textSize="25sp"android:padding="15dp" /><Buttonandroid:id="@+id/btn_home"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="返航"app:layout_constraintTop_toBottomOf="@+id/btn_get_home_height"android:layout_marginTop="10dp"android:textSize="25sp"android:padding="15dp" /><Buttonandroid:id="@+id/btn_home_cancel"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="取消返航"app:layout_constraintTop_toBottomOf="@+id/btn_home"android:layout_marginTop="10dp"android:textSize="25sp"android:padding="15dp" /> </androidx.constraintlayout.widget.ConstraintLayout>

FlightActivity.java

????????在上一步添加的按鈕,要使其實(shí)現(xiàn)功能,需要在 FlightActivity.java獲取上述8個(gè)按鈕的對(duì)象,并監(jiān)聽(tīng)其單擊方法,代碼如下:

public class FlightActivity extends AppCompatActivity implements View.OnClickListener {private Button mBtnTakeoff, mBtnCancelTakeoff, mBtnLanding, mBtnCancelLanding;private Button mBtnSetHomeHeight, mBtnGetHomeHeight, mBtnHome, mBtnCancelHome;public FlightActivity() {}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_flight);//初始化UI界面initUI();//初始化監(jiān)聽(tīng)器initListener();}private void initUI() {mBtnTakeoff = findViewById(R.id.btn_takeoff);mBtnCancelTakeoff = findViewById(R.id.btn_takeoff_cancel);mBtnLanding = findViewById(R.id.btn_landing);mBtnCancelLanding = findViewById(R.id.btn_landing_cancel);mBtnSetHomeHeight = findViewById(R.id.btn_set_home_height);mBtnGetHomeHeight = findViewById(R.id.btn_get_home_height);mBtnHome = findViewById(R.id.btn_home);mBtnCancelHome = findViewById(R.id.btn_home_cancel);}private void initListener() {mBtnTakeoff.setOnClickListener(this);mBtnCancelTakeoff.setOnClickListener(this);mBtnLanding.setOnClickListener(this);mBtnCancelLanding.setOnClickListener(this);mBtnSetHomeHeight.setOnClickListener(this);mBtnGetHomeHeight.setOnClickListener(this);mBtnHome.setOnClickListener(this);mBtnCancelHome.setOnClickListener(this);}@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.btn_takeoff: {takeoff();break;}case R.id.btn_takeoff_cancel: {cancelTakeoff();break;}case R.id.btn_landing: {landing();break;}case R.id.btn_landing_cancel: {cancelLanding();break;}case R.id.btn_set_home_height: {setHomeHeight();break;}case R.id.btn_get_home_height: {getHomeHeight();break;}case R.id.btn_home: {home();break;}case R.id.btn_home_cancel: {cancelHome();break;}default:break;}}//起飛private void takeoff() {}//取消起飛private void cancelTakeoff() {}//降落private void landing() {}//取消降落private void cancelLanding() {}//設(shè)置返航高度private void setHomeHeight() {}//獲取返航高度private void getHomeHeight() {}//返航private void home() {}//取消返航private void cancelHome() {}//在主線(xiàn)程中顯示提示private void showToast(final String toastMsg) {runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(getApplicationContext(), toastMsg, Toast.LENGTH_LONG).show();}});} }

4.AndroidManifest

????????在 AndroidManifest.xml 文件中,配置 MainActivity FlightActivity 之間的關(guān)系,以便于在?FlightActivity 中返回到?MainActivity,界面與代碼如下:

<activityandroid:name=".MainActivity"android:configChanges="orientation"android:launchMode="singleTop"android:screenOrientation="portrait"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter> </activity><activityandroid:name=".FlightActivity"android:configChanges="orientation"android:parentActivityName=".MainActivity"android:screenOrientation="portrait" />

DJI Mobile SDK的回調(diào)方法

無(wú)人機(jī)的監(jiān)控操作需要通過(guò)LightBridge、OcuSync等鏈路進(jìn)行信息傳遞。

受信號(hào)衰減和環(huán)境干擾的影響,信息傳遞通常要消耗一定時(shí)間完成。因此對(duì)無(wú)人機(jī)的各類(lèi)操作均需要通過(guò)回調(diào)的方法來(lái)介入處理。

?在 Android Mobile SDK 中,回調(diào)函數(shù)的接口通過(guò) CommonCallbacks 定義

  • CompletionCallback :僅包括 onResult(DJIError? error) 抽象方法。當(dāng) error 為空時(shí),任務(wù)執(zhí)行成功;當(dāng) error 不為空時(shí),通過(guò)其 getDescription() 方法詳細(xì)錯(cuò)誤信息
  • CompletionCallbackWith<T>:包括 onSuccess(T? val) onFailure(DJIError? error) 兩個(gè)方法。當(dāng)任務(wù)執(zhí)行成功時(shí),回調(diào) onSuccess(…) 方法,且返回參數(shù) val當(dāng)任務(wù)執(zhí)行失敗時(shí),回調(diào) onFailure(…) 方法,且其中的 error 對(duì)象包含了錯(cuò)誤描述
  • CompletionCallbackWithTwoParam<X, Y>:與?CompletionCallbackWith<T> 類(lèi)似,包括 onSuccess(X?val1, Y val2) onFailure(DJIError? error) 兩個(gè)方法,方法執(zhí)行成功時(shí)返回 val1 和 val2 兩個(gè)參數(shù)

?起飛、降落與返航的實(shí)現(xiàn)

獲取控制器

API Reference:FlightController()?

“點(diǎn)擊API可跳轉(zhuǎn)DJI Developer官網(wǎng)API相應(yīng)位置?”

創(chuàng)建獲取飛行控制器的 getFlightController() 方法

大疆Mobile SDK API中對(duì)FlightController() 類(lèi)的描述


飛行控制器的功能由飛行控制器類(lèi)定義,飛行控制器對(duì)象可通過(guò)以下步驟獲取:

(1)通過(guò) DJISDKManager 獲取產(chǎn)品基類(lèi)(BaseProduct)對(duì)象,并判斷是否為無(wú)人機(jī)對(duì)象

(2)在 Android 中需要通過(guò)飛行控制器對(duì)象的 isConnected() 方法判斷是否與無(wú)人機(jī)成功連接

具體代碼實(shí)現(xiàn):

//獲取無(wú)人機(jī)的飛行控制器private FlightController getFlightController() {BaseProduct product = DJISDKManager.getInstance().getProduct();if (product != null && product.isConnected()) {if (product instanceof Aircraft) {return ((Aircraft) product).getFlightController();}}return null;}

起飛與取消起飛

API Reference:startTaskoff()、cancelTaskoff()

“點(diǎn)擊API可跳轉(zhuǎn)DJI Developer官網(wǎng)API相應(yīng)位置?”

有關(guān) startTakeoff(…) 方法的描述 有關(guān) cancelTakeoff(…) 方法的描述題

通過(guò)飛行控制器的自動(dòng)起飛自動(dòng)精準(zhǔn)起飛方法可實(shí)現(xiàn)無(wú)人機(jī)的起飛動(dòng)作。

自動(dòng)起飛方法必須在電機(jī)關(guān)閉時(shí)調(diào)用,并在起飛后0.5m左右懸停并回調(diào)。對(duì)于具有下方視覺(jué)定位的無(wú)人機(jī),可通過(guò)自動(dòng)精準(zhǔn)起飛方法在起飛的6m之內(nèi)獲得其周?chē)曈X(jué)定位記憶,當(dāng)無(wú)人機(jī)再次降落時(shí)即可降落到相對(duì)更加準(zhǔn)確的位置。

具體代碼實(shí)現(xiàn):

? ? ? ? 實(shí)現(xiàn) takeoff()cancelTakeoff() 方法,通過(guò)飛行控制器對(duì)象的 startTakeoff(…) 方法實(shí)現(xiàn)起飛功能,通過(guò)飛行控制器對(duì)象的?cancelTakeoff(…)?方法實(shí)現(xiàn)取消起飛功能

//起飛private void takeoff() {FlightController flightController = getFlightController();if (flightController != null) {flightController.startTakeoff(new CommonCallbacks.CompletionCallback() {@Overridepublic void onResult(DJIError djiError) {if (djiError != null) {showToast(djiError.toString());} else {showToast("開(kāi)始起飛!");}}});} else {showToast("飛行控制器獲取失敗,請(qǐng)檢查飛行控制器是否連接正常!");}}//取消起飛private void cancelTakeoff() {FlightController flightController = getFlightController();if (flightController != null) {flightController.cancelTakeoff(new CommonCallbacks.CompletionCallback() {@Overridepublic void onResult(DJIError djiError) {if (djiError != null) {showToast(djiError.toString());} else {showToast("取消起飛成功!");}}});} else {showToast("飛行控制器獲取失敗,請(qǐng)檢查飛行控制器是否連接正常!");}}

降落與取消降落

API Reference:startLanding()、cancelLanding()

“點(diǎn)擊API可跳轉(zhuǎn)DJI Developer官網(wǎng)API相應(yīng)位置?”

有關(guān) startLanding(…) 方法的描述 有關(guān) cancelLanding(…) 方法的描述

通過(guò)飛行控制器的自動(dòng)降落方法可實(shí)現(xiàn)無(wú)人機(jī)的降落動(dòng)作。

對(duì)于具有降落保護(hù)功能(下方避障功能)的無(wú)人機(jī),無(wú)人機(jī)在距離地面 0.3m 時(shí)會(huì)對(duì)地面進(jìn)行檢測(cè)。如果檢測(cè)通過(guò),則自動(dòng)進(jìn)行降落;如果檢測(cè)不通過(guò),則需要通過(guò)確認(rèn)自動(dòng)降落的方法繼續(xù)執(zhí)行降落程序。

????????實(shí)現(xiàn) landing()cancelLanding() 方法,通過(guò)飛行控制器對(duì)象的 startLanding(…) 方法實(shí)現(xiàn)降落功能,通過(guò)飛行控制器的 cancelLanding(…) 方法實(shí)現(xiàn)取消降落功能。

具體代碼實(shí)現(xiàn):?

//降落private void landing() {FlightController flightController = getFlightController();if (flightController != null) {flightController.startLanding(new CommonCallbacks.CompletionCallback() {@Overridepublic void onResult(DJIError djiError) {if (djiError != null) {showToast("開(kāi)始降落!");} else {showToast(djiError.toString());}}});} else {showToast("飛行控制器獲取失敗,請(qǐng)檢查飛行控制器是否連接正常!");}}//取消降落private void cancelLanding() {FlightController flightController = getFlightController();if (flightController != null) {flightController.cancelLanding(new CommonCallbacks.CompletionCallback() {@Overridepublic void onResult(DJIError djiError) {if (djiError != null) {showToast("取消降落成功!");} else {showToast(djiError.toString());}}});} else {showToast("飛行控制器獲取失敗,請(qǐng)檢查飛行控制器是否連接正常!");}}

????????在 Android 中,是否需要確認(rèn)降落需要通過(guò)飛行控制器狀態(tài)(FlightControllerState)的isLandingConfirmationNeeded() 方法獲取。如需要確認(rèn)降落,則可通過(guò)飛行控制器類(lèi)的confirmLanding(…)?方法繼續(xù)降落。


返航與取消返航

API Reference: startGoHome()、cancelGoHome()

“點(diǎn)擊API可跳轉(zhuǎn)DJI Developer官網(wǎng)API相應(yīng)位置?”

有關(guān) startGoHome(…) 方法的描述 有關(guān) cancelGoHome(…) 方法的描述

????????實(shí)現(xiàn) home()cancelhome() 方法,通過(guò)飛行控制器對(duì)象的 startGoHome(…) 方法實(shí)現(xiàn)返航功能,通過(guò)飛行控制器的 cancelGoHome(…) 方法實(shí)現(xiàn)取消返航功能。?

具體代碼實(shí)現(xiàn):

//返航private void home() {FlightController flightController = getFlightController();if (flightController != null) {flightController.startGoHome(new CommonCallbacks.CompletionCallback() {@Overridepublic void onResult(DJIError djiError) {if (djiError != null) {showToast("開(kāi)始返航!");} else {showToast(djiError.toString());}}});} else {showToast("飛行控制器獲取失敗,請(qǐng)檢查飛行控制器是否連接正常!");}}//取消返航private void cancelHome() {FlightController flightController = getFlightController();if (flightController != null) {flightController.cancelGoHome(new CommonCallbacks.CompletionCallback() {@Overridepublic void onResult(DJIError djiError) {if (djiError != null) {showToast("取消返航成功!");} else {showToast(djiError.toString());}}});} else {showToast("飛行控制器獲取失敗,請(qǐng)檢查飛行控制器是否連接正常!");}}

返航高度的設(shè)置與獲取

?API Reference: ?setGoHomeHeightInMeters()、getGoHomeHeightInMeters()

?“點(diǎn)擊API可跳轉(zhuǎn)DJI Developer官網(wǎng)API相應(yīng)位置?”

有關(guān) setGoHomeHeightInMeters(…) 方法的描述

返航高度應(yīng)設(shè)置在20~500m 的范圍內(nèi),切不超過(guò)得醒的最大高度。

當(dāng)返航高度設(shè)置過(guò)低時(shí),會(huì)返回類(lèi) “The go home altitude is too low (lower than 20m)” 的錯(cuò)誤提示;當(dāng)設(shè)置的返航高度過(guò)高時(shí),會(huì)返回類(lèi)似 “The go home altitude is too high (higher than max flight height)” 的錯(cuò)誤提示。

有關(guān) getGoHomeHeightInMeters(…) 方法的描述

????????實(shí)現(xiàn) setGoHomeHeight() getGoHomeHeight() 方法,通過(guò)飛行控制器對(duì)象的 setGoHomeHeightInMeters(…) 方法實(shí)現(xiàn)設(shè)置返航高度功能,通過(guò)飛行控制器的 getGoHomeHeightInMeters(…) 方法實(shí)現(xiàn)獲取返航高度功能。?

具體代碼實(shí)現(xiàn):

//設(shè)置返航高度private void setHomeHeight() {//設(shè)置返航高度文本里final EditText editText = new EditText(this);//限定只能輸入數(shù)字editText.setInputType(InputType.TYPE_CLASS_NUMBER);new AlertDialog.Builder(this).setTitle("請(qǐng)輸入返航高度(m)").setView(editText).setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {int height = Integer.parseInt(editText.getText().toString());final FlightController flightController = getFlightController();if (flightController != null) {flightController.setGoHomeHeightInMeters(height, new CommonCallbacks.CompletionCallback() {@Overridepublic void onResult(DJIError djiError) {if (djiError != null) {showToast(djiError.toString());} else {showToast("返航高度設(shè)置成功!");}}});} else {showToast("飛行控制器獲取失敗,請(qǐng)檢查飛行控制器是否連接正常!");}}}).setNegativeButton("取消", null).show();}//獲取返航高度private void getHomeHeight() {final FlightController flightController = getFlightController();if (flightController != null) {flightController.getGoHomeHeightInMeters(new CommonCallbacks.CompletionCallbackWith<Integer>() {@Overridepublic void onSuccess(Integer integer) {showToast("返航高度為:" + integer + "米");}@Overridepublic void onFailure(DJIError djiError) {showToast("獲取返航高度失敗:" + djiError.toString());}});} else {showToast("飛行控制器獲取失敗,請(qǐng)檢查飛行控制器是否連接正常!");}}

????????在?setGoHomeHeight() 方法中,通過(guò) AlertDialog 類(lèi)彈出對(duì)話(huà)框,用于用戶(hù)輸入返航高度,由于 setView(editText) 語(yǔ)句,將輸入內(nèi)容限定為整形數(shù)字

設(shè)置返航高度對(duì)話(huà)框

?????????在關(guān)閉對(duì)話(huà)框后,調(diào)用飛行控制器的 setGoHomeHeightInMeters(…) 方法,并傳入返航高度和回調(diào)函數(shù)。getGoHomeHeight() 方法中,其回調(diào)方法 onSuccess(Integer?height) 中的 height 參數(shù)返回了無(wú)人機(jī)的返航高度


自定義提示

????????代碼中均使用 showToast() 方法來(lái)實(shí)現(xiàn)在主線(xiàn)程中顯示提示的功能,也可直接使用 Toast()?提示,將文中代碼涉及 showToast() 的部分更換為 Toast()?

//在主線(xiàn)程中顯示提示private void showToast(final String toastMsg) {runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(getApplicationContext(), toastMsg, Toast.LENGTH_LONG).show();}});}

按住鍵盤(pán)的 Crtl 鍵,鼠標(biāo)左鍵單擊Toast方法,即可在 Android Studio 中跳轉(zhuǎn)到 Toast 類(lèi)?

public class Toast {public static final int LENGTH_LONG = 1;public static final int LENGTH_SHORT = 0;public Toast(Context context) {throw new RuntimeException("Stub!");}public void show() {throw new RuntimeException("Stub!");}public void cancel() {throw new RuntimeException("Stub!");}/** @deprecated */@Deprecatedpublic void setView(View view) {throw new RuntimeException("Stub!");}/** @deprecated */@Deprecated@Nullablepublic View getView() {throw new RuntimeException("Stub!");}public void setDuration(int duration) {throw new RuntimeException("Stub!");}public int getDuration() {throw new RuntimeException("Stub!");}public void setMargin(float horizontalMargin, float verticalMargin) {throw new RuntimeException("Stub!");}public float getHorizontalMargin() {throw new RuntimeException("Stub!");}public float getVerticalMargin() {throw new RuntimeException("Stub!");}public void setGravity(int gravity, int xOffset, int yOffset) {throw new RuntimeException("Stub!");}public int getGravity() {throw new RuntimeException("Stub!");}public int getXOffset() {throw new RuntimeException("Stub!");}public int getYOffset() {throw new RuntimeException("Stub!");}public void addCallback(@NonNull Toast.Callback callback) {throw new RuntimeException("Stub!");}public void removeCallback(@NonNull Toast.Callback callback) {throw new RuntimeException("Stub!");}public static Toast makeText(Context context, CharSequence text, int duration) {throw new RuntimeException("Stub!");}public static Toast makeText(Context context, int resId, int duration) throws NotFoundException {throw new RuntimeException("Stub!");}public void setText(int resId) {throw new RuntimeException("Stub!");}public void setText(CharSequence s) {throw new RuntimeException("Stub!");}public abstract static class Callback {public Callback() {throw new RuntimeException("Stub!");}public void onToastShown() {throw new RuntimeException("Stub!");}public void onToastHidden() {throw new RuntimeException("Stub!");}} }

總結(jié)

以上是生活随笔為你收集整理的大疆 DJI Mobile SDK 开发:模拟器调试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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