目录
前言
开发环境介绍
开发前的准备
应用程序中MSDK注册
下章预告
前言目前正好在做有关大疆无人机MSDK二次开发的工作,项目中之前使用的MSDK是V4版本的,由于现在大疆MSDK V4已停止更新,为了适配新机型,我们采用MSDK V5实现功能。大疆开发者官网中提供了一些MSDK V5的使用方法,但是写的比较概括,具体的功能使用方法还需开发者进一步的探索,本人也是初次接触无人机开发,因此把总结出的一些方法分享处理,期望一起进步!
开发环境介绍大疆开发者官网(DJI Developer)中介绍了官方推荐的MSDK V5的开发环境,如下所示:

大家也可以根据自身项目的需要,选择合适的开发环境。只要能成功调用SDK便可行。
开发前的准备1、注册成为DJI 开发者
要创建一个引用大疆MSDK的应用程序,需要唯一的应用程序密码(App Key)初始化SDK,App Key的申请需在登录DJI Account | LOG IN(大疆开发者网站)进行。登录成功后主要步骤如下:
(1)点击网站界面左侧APP,之后点击界面上方的CREATE APP按钮。如下图所示:

(2)弹出如下图所示填写信息的对话框,补充完相应的应用信息即可。

(3)填写完相应的信息后就能在界面上看到生成的App Key啦!

2、项目中引入MSDK包、UXSDK开源框架。
(1)MSDK包说明:

具体调用方法在Mobile SDK中进行了详细说明。
(2)UXSDK开源框架
UXSDK开源框架包含了大疆示例demo的一些功能,在此基础上可以方便用户快速集成开发,可根据需要选择是否引入。具体引用流程在大疆网站Mobile SDK中已经详细介绍。
应用程序中MSDK注册(1)按照大疆MSDK的使用流程,应用程序若想顺利调用大疆MSDK,需首先进行MSDK注册。注册一般放在应用运行初始阶段,如下图,放在新建的MyApplication下,与MainActivity同级。
class MyApplication : Application() { var mHandler: Handler? = null private val TAG = "mysdk" var isInit = false companion object { const val FLAG_CONNECTION_CHANGE: String = "connection_change" } override fun attachBaseContext(base: Context?) { super.attachBaseContext(base) // 在调用 install 前,请勿调用任何 MSDK 相关接口 // MSDK v5.10.0 之前的版本请使用 com.secneo.sdk.Helper.install(this) com.cySdkyc.clx.Helper.install(this) } override fun onCreate() { super.onCreate() mHandler = Handler(Looper.getMainLooper()) val handler = Handler(Looper.getMainLooper()) // 初始化 MSDK,建议初始化逻辑放在 Application 中,当然也可以根据自己的需要放在任意地方。 SDKManager.getInstance().init(this,object: SDKManagerCallback { override fun onInitProcess(event: DJISDKInitEvent?, totalProcess: Int) { if (TAG != null) { Log.i("myApplication", TAG) } Log.i(TAG, "onInitProcess: ") if (event == DJISDKInitEvent.INITIALIZE_COMPLETE) { SDKManager.getInstance().registerApp() } } override fun onRegisterSuccess() { Log.i(TAG, "onRegisterSuccess: ") handler.post(kotlinx.coroutines.Runnable { Toast.makeText(applicationContext,"onRegisterSuccess: ", Toast.LENGTH_LONG).show() }) } override fun onRegisterFailure(error: IDJIError?) { Log.i(TAG, "onRegisterFailure: "+ error) handler.post(kotlinx.coroutines.Runnable { if (error != null) { Toast.makeText(applicationContext,"onRegisterFailure: "+error.description(),Toast.LENGTH_LONG).show() } }) } override fun onProductConnect(productId: Int) { Log.i(TAG, "onProductConnect: "+ productId) } override fun onProductDisconnect(productId: Int) { Log.i(TAG, "onProductDisconnect: " + productId) } override fun onProductChanged(productId: Int) { Log.i(TAG, "onProductChanged: " + productId) } override fun onDatabaseDownloadProgress(current: Long, total: Long) { Log.i(TAG, "onDatabaseDownloadProgress: ${current/total}") } }) } }(2)在AndroidManifest.xml中将application中标签设置为如下所示:
(3)初始化MainActivity,直接用Android Studio默认的新建Empty Activity即可。
package com.example.msdksample import androidx.appcompat.app.AppCompatActivity import android.os.Bundle class MainActivity : AppCompatActivity() { override fun onCreate(sedInstanceState: Bundle?) { super.onCreate(sedInstanceState) setContentView(R.layout.activity_main) } }(4)运行工程,进入MainActivity,查看打印信息,若显示onRegisterSuccess: 证明SDK注册成功,若未注册成功,则显示onRegisterFailure:+ 具体的错误描述信息,可根据相应的错误信息查看原因,如若一时难以解决,可登录至 DJI中填写请求清单或查看论坛有无分享解决方法。
下章预告下章希望结合实例和大家分享一些大疆无人机MSDK V5具体功能接口的调用方法。