Android端集成大疆SDK(MSDK)

大疆无人机SDK集成项目

本项目主要是集成大疆SDK,并通过大疆API来获取无人机实时传递回来的h264数据,以及通过编解码API拿到YUV数据;
该项目里面封装了一些基础的API调用,方便后续集成调用。
 1. 无人机接入准备
 2. 编译环境准备
 3. 关键代码
 4. 项目地址

1. 无人机接入准备

 1. 本项目测试机型为大疆的御pro 2,遥控器为不带屏遥控器。(带屏遥控器是无法使用大疆SDK的)
 2. 集成使用要点:
	* 需先用测试手机下载大疆专用APP (DJI GO 4)软件进行无人机与遥控器之间的对频操作,此时应该注意,每次将手机和无人机进行USB连接时,会弹出默认启动应用弹框,应选择仅次一次;不然后续装上自己的应用后,连上无人机是无法拉起我们自己的应用的。
	* 当连接成功,可以正常起飞后,此时在手机端装入自己的应用,启动并执行 DroneModel中的 startRegisterSDK 方法,执行注册大疆SDK。
	* 注册成功后,会弹出登录弹框,提示登录大疆账号,此时应填入自己的大疆账号(国内每三个月登录一次,国外不受此限制)
	* 接口 setDjiProductStateCallBack 是回调产品数据,当存在产品时,会执行onAirPlaneStateChange(bool)方法,传入参数为true
	* 接口 setDroneH264VideoDataCallBack 回调,来获取无人机回传的H264数据,获取H264数据
	* 接口 DroneYUVDataCallBack回调,来获取无人机回传的数据,通过CodeManager解码后获取YUV数据
	* 方法 videoPreview方法,传入surfaceView,来执行无人机摄像头数据预览
	* 方法 setAirPlaneCameraParam方法,来设置无人机摄像头参数,具体参数请查看DJICameraParams类,其中有详细的说明
	* DroneModel是单例方法,直接通过getInstance拿到单例对象即可
	* FileUtils工具类提供了写入H264流到文件,写出的文件可以直接通过暴风影音来进行播放,查看H264是否正常

2. 编译环境准备

1. 当前编译环境:Android studio 3.2  gradle版本为:3.2.1  gradle-wrapper版本为:4.6
2. 大疆SDK导入 :在当前项目build.gradle 下导入
	1. build.gradle 配置
	   android {
		   defaultConfig {
			   ……
			   ndk {
				   // 这里只做了armeabi-v7a架构的支持,大疆SDK不支持armeabi架构
				    abiFilters 'armeabi-v7a'
			   }
		   }
		  dexOptions {
		    javaMaxHeapSize "4g"
		   }
		   
		  packagingOptions {
			doNotStrip "*/*/libdjivideo.so"
			doNotStrip "*/*/libSDKRelativeJNI.so"
			doNotStrip "*/*/libFlyForbid.so"
			doNotStrip "*/*/libduml_vision_bokeh.so"
			doNotStrip "*/*/libyuv2.so"
			doNotStrip "*/*/libGroudStation.so"
			doNotStrip "*/*/libFRCorkscrew.so"
			doNotStrip "*/*/libUpgradeVerify.so"
			doNotStrip "*/*/libFR.so"
			doNotStrip "*/*/libDJIFlySafeCore.so"
			doNotStrip "*/*/libdjifs_jni.so"
			doNotStrip "*/*/libsfjni.so"
			exclude 'META-INF/rxjava.properties'
		  }
		  dependencies {
			implementation 'com.android.support:multidex:1.0.2'
			implementation('com.dji:dji-sdk:4.9', {
			//if your app needn't support Mavic 2 Pro and Mavic 2 Zoom, pls exclude the library-anti-distortion module
			//like following
			//exclude module: 'library-anti-distortion'

			//Uncomment the following line if your APP does not need network RTK.
			//For Phantom 4 RTK and Matrice 210 RTK V2. Network RTK can be used as a virtual reference station to provide
			//cm level accurate position.
			//exclude module: 'library-anti-distortion'
			})
			compileOnly 'com.dji:dji-sdk-provided:4.9'
		  }
	   }
	2. AndroidManifest配置
	<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.distance.third.dji">	
		<uses-permission android:name="android.permission.VIBRATE" />
		<uses-permission android:name="android.permission.INTERNET" />
		<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
		<uses-permission android:name="android.permission.WAKE_LOCK" />
		<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
		<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
		<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
使用大疆MSDKAndroid Studio中的步骤如下: 1. 下载大疆MSDK并将其解压缩。 2. 在Android Studio中创建一个新项目。 3. 将解压缩的MSDK文件夹拷贝到项目的根目录下。 4. 在gradle文件的dependencies中添加以下代码: ``` implementation files('msdklib.jar') ``` 注意:msdklib.jar的路径应该是相对于项目根目录的。如果你的MSDK文件夹的名称不是msdklib,请修改上述代码。 5. 在AndroidManifest.xml文件中添加以下代码: ``` <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> ``` 6. 在你的MainActivity中初始化MSDK,如下所示: ``` import dji.sdk.base.BaseProduct; import dji.sdk.sdkmanager.DJISDKManager; public class MainActivity extends AppCompatActivity { private static final String TAG = MainActivity.class.getName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化 DJI SDK DJISDKManager.getInstance().registerApp(getApplicationContext(), new DJISDKManager.SDKManagerCallback() { @Override public void onRegister(DJIError djiError) { if (djiError == DJISDKError.REGISTRATION_SUCCESS) { Log.d(TAG, "DJI SDK 注册成功!"); } else { Log.d(TAG, "DJI SDK 注册失败!"); } } @Override public void onProductDisconnect() { Log.d(TAG, "DJI 产品断开连接!"); } @Override public void onProductConnect(BaseProduct baseProduct) { Log.d(TAG, "DJI 产品连接成功!"); } @Override public void onComponentChange(BaseProduct.ComponentKey componentKey, BaseProduct.ComponentState componentState, BaseProduct.ComponentState componentState1) { Log.d(TAG, "DJI 产品组件变化!"); } }); } } ``` 注意:在注册SDK时,你需要提供你的App Key和App Secret。你可以在大疆开发者中心申请获得。 7. 在你的代码中使用MSDK提供的API。 以上就是在Android Studio中使用大疆MSDK的步骤。你可以参考MSDK的官方文档来了解更详细的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值