├── .gitignore ├── ImportSDKDemo ├── .gitignore ├── app │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── dji │ │ │ └── importSDKDemo │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── dji │ │ │ │ └── importSDKDemo │ │ │ │ ├── MApplication.java │ │ │ │ └── MainActivity.java │ │ └── res │ │ │ ├── layout │ │ │ └── activity_main.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── raw │ │ │ └── keep.xml │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── dji │ │ └── importSDKDemo │ │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── import-summary.txt └── settings.gradle ├── LICENSE.txt └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # files for the dex VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # generated files 12 | bin/ 13 | gen/ 14 | obj/ 15 | DJI-SDK-LIB_3.1/build/ 16 | build/ 17 | 18 | # generated file 19 | lint.xml 20 | 21 | # Local configuration file (sdk/lib path, etc) 22 | local.properties 23 | project.properties 24 | 25 | # Eclipse project files 26 | .classpath 27 | .settings/ 28 | 29 | # Proguard folder generated by Eclipse 30 | proguard/ 31 | 32 | # Intellij project files 33 | *.iml 34 | *.ipr 35 | *.iws 36 | .idea/ 37 | 38 | # Mac files 39 | .DS_Store 40 | 41 | # Gradle generated files 42 | .gradle/ 43 | 44 | # Signing files 45 | .signing/ 46 | 47 | # User-specific configurations 48 | .idea/libraries/ 49 | .idea/workspace.xml 50 | .idea/tasks.xml 51 | .idea/.name 52 | .idea/compiler.xml 53 | .idea/copyright/profiles_settings.xml 54 | .idea/encodings.xml 55 | .idea/misc.xml 56 | .idea/modules.xml 57 | .idea/scopes/scope_settings.xml 58 | .idea/vcs.xml 59 | *.iml 60 | 61 | # OS-specific files 62 | .DS_Store 63 | .DS_Store? 64 | ._* 65 | .Spotlight-V100 66 | .Trashes 67 | ehthumbs.db 68 | Thumbs.db 69 | 70 | # Import summary file 71 | import-summary.txt 72 | -------------------------------------------------------------------------------- /ImportSDKDemo/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | -------------------------------------------------------------------------------- /ImportSDKDemo/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /ImportSDKDemo/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | repositories { 4 | mavenLocal() 5 | } 6 | 7 | android { 8 | compileSdkVersion 30 9 | buildToolsVersion '30.0.2' 10 | 11 | defaultConfig { 12 | minSdkVersion 19 13 | targetSdkVersion 30 14 | multiDexEnabled true 15 | ndk { 16 | abiFilters 'armeabi-v7a', 'arm64-v8a' 17 | } 18 | } 19 | 20 | buildTypes { 21 | release { 22 | minifyEnabled false 23 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 24 | } 25 | debug { 26 | shrinkResources true 27 | minifyEnabled true 28 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 29 | } 30 | } 31 | 32 | dexOptions { 33 | javaMaxHeapSize "4g" 34 | } 35 | 36 | packagingOptions { 37 | doNotStrip "*/*/libdjivideo.so" 38 | doNotStrip "*/*/libSDKRelativeJNI.so" 39 | doNotStrip "*/*/libFlyForbid.so" 40 | doNotStrip "*/*/libduml_vision_bokeh.so" 41 | doNotStrip "*/*/libyuv2.so" 42 | doNotStrip "*/*/libGroudStation.so" 43 | doNotStrip "*/*/libFRCorkscrew.so" 44 | doNotStrip "*/*/libUpgradeVerify.so" 45 | doNotStrip "*/*/libFR.so" 46 | doNotStrip "*/*/libDJIFlySafeCore.so" 47 | doNotStrip "*/*/libdjifs_jni.so" 48 | doNotStrip "*/*/libsfjni.so" 49 | doNotStrip "*/*/libDJICommonJNI.so" 50 | doNotStrip "*/*/libDJICSDKCommon.so" 51 | doNotStrip "*/*/libDJIUpgradeCore.so" 52 | doNotStrip "*/*/libDJIUpgradeJNI.so" 53 | exclude 'META-INF/rxjava.properties' 54 | } 55 | 56 | compileOptions { 57 | sourceCompatibility JavaVersion.VERSION_1_8 58 | targetCompatibility JavaVersion.VERSION_1_8 59 | } 60 | } 61 | 62 | 63 | dependencies { 64 | implementation fileTree(dir: 'libs', include: ['*.jar']) 65 | implementation 'androidx.multidex:multidex:2.0.1' 66 | implementation 'com.squareup:otto:1.3.8' 67 | implementation('com.dji:dji-sdk:4.15', { 68 | /** 69 | * Uncomment the "library-anti-distortion" if your app does not need Anti Distortion for Mavic 2 Pro and Mavic 2 Zoom. 70 | * Uncomment the "fly-safe-database" if you need database for release, or we will download it when DJISDKManager.getInstance().registerApp 71 | * is called. 72 | * Both will greatly reducing the size of the APK. 73 | */ 74 | exclude module: 'library-anti-distortion' 75 | //exclude module: 'fly-safe-database' 76 | }) 77 | compileOnly 'com.dji:dji-sdk-provided:4.15' 78 | 79 | androidTestCompile('androidx.test.espresso:espresso-core:3.1.0', { 80 | exclude group: 'com.android.support', module: 'support-annotations' 81 | }) 82 | testImplementation 'junit:junit:4.13.2' 83 | 84 | implementation 'androidx.appcompat:appcompat:1.2.0' 85 | implementation 'androidx.core:core:1.3.2' 86 | implementation 'androidx.constraintlayout:constraintlayout:2.0.4' 87 | implementation 'androidx.recyclerview:recyclerview:1.1.0' 88 | implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' 89 | implementation 'androidx.annotation:annotation:1.2.0' 90 | } 91 | -------------------------------------------------------------------------------- /ImportSDKDemo/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | -keepattributes Exceptions,InnerClasses,*Annotation*,Signature,EnclosingMethod 2 | 3 | -dontoptimize 4 | -dontpreverify 5 | -dontwarn okio.** 6 | -dontwarn org.bouncycastle.** 7 | -dontwarn dji.** 8 | -dontwarn com.dji.** 9 | -dontwarn sun.** 10 | -dontwarn java.** 11 | -dontwarn com.amap.api.** 12 | -dontwarn com.here.** 13 | -dontwarn com.mapbox.** 14 | -dontwarn okhttp3.** 15 | -dontwarn retrofit2.** 16 | 17 | -keepclassmembers enum * { 18 | public static ; 19 | } 20 | 21 | -keepnames class * implements java.io.Serializable 22 | -keepclassmembers class * implements java.io.Serializable { 23 | static final long serialVersionUID; 24 | private static final java.io.ObjectStreamField[] serialPersistentFields; 25 | !static !transient ; 26 | private void writeObject(java.io.ObjectOutputStream); 27 | private void readObject(java.io.ObjectInputStream); 28 | java.lang.Object writeReplace(); 29 | java.lang.Object readResolve(); 30 | } 31 | -keep class * extends android.os.Parcelable { 32 | public static final android.os.Parcelable$Creator *; 33 | } 34 | 35 | -keep,allowshrinking class * extends dji.publics.DJIUI.** { 36 | public ; 37 | } 38 | 39 | -keep class net.sqlcipher.** { *; } 40 | 41 | -keep class net.sqlcipher.database.* { *; } 42 | 43 | -keep class dji.** { *; } 44 | 45 | -keep class com.dji.** { *; } 46 | 47 | -keep class com.google.** { *; } 48 | 49 | -keep class org.bouncycastle.** { *; } 50 | 51 | -keep,allowshrinking class org.** { *; } 52 | 53 | -keep class com.squareup.wire.** { *; } 54 | 55 | -keep class sun.misc.Unsafe { *; } 56 | 57 | -keep class com.secneo.** { *; } 58 | 59 | -keep class org.greenrobot.eventbus.**{*;} 60 | 61 | -keep class it.sauronsoftware.ftp4j.**{*;} 62 | 63 | -keepclasseswithmembers,allowshrinking class * { 64 | native ; 65 | } 66 | 67 | -keep class * implements com.google.gson.TypeAdapterFactory 68 | -keep class * implements com.google.gson.JsonSerializer 69 | -keep class * implements com.google.gson.JsonDeserializer 70 | 71 | -keep class androidx.appcompat.widget.SearchView { *; } 72 | 73 | -keepclassmembers class * extends android.app.Service 74 | -keepclassmembers public class * extends android.view.View { 75 | void set*(***); 76 | *** get*(); 77 | } 78 | -keepclassmembers class * extends android.app.Activity { 79 | public void *(android.view.View); 80 | } 81 | -keep class androidx.** { *; } 82 | -keep class android.media.** { *; } 83 | -keep class okio.** { *; } 84 | -keep class com.lmax.disruptor.** { *; } 85 | -keep class com.qx.wz.dj.rtcm.* { *; } 86 | 87 | -dontwarn com.mapbox.services.android.location.LostLocationEngine 88 | -dontwarn com.mapbox.services.android.location.MockLocationEngine 89 | -keepclassmembers class * implements android.arch.lifecycle.LifecycleObserver { 90 | (...); 91 | } 92 | # ViewModel's empty constructor is considered to be unused by proguard 93 | -keepclassmembers class * extends android.arch.lifecycle.ViewModel { 94 | (...); 95 | } 96 | # keep Lifecycle State and Event enums values 97 | -keepclassmembers class android.arch.lifecycle.Lifecycle$State { *; } 98 | -keepclassmembers class android.arch.lifecycle.Lifecycle$Event { *; } 99 | # keep methods annotated with @OnLifecycleEvent even if they seem to be unused 100 | # (Mostly for LiveData.LifecycleBoundObserver.onStateChange(), but who knows) 101 | -keepclassmembers class * { 102 | @android.arch.lifecycle.OnLifecycleEvent *; 103 | } 104 | 105 | -keepclassmembers class * implements android.arch.lifecycle.LifecycleObserver { 106 | (...); 107 | } 108 | 109 | -keep class * implements android.arch.lifecycle.LifecycleObserver { 110 | (...); 111 | } 112 | -keepclassmembers class android.arch.** { *; } 113 | -keep class android.arch.** { *; } 114 | -dontwarn android.arch.** 115 | 116 | -keep class org.apache.commons.** {*;} 117 | 118 | 119 | #<------------ utmiss config start------------> 120 | -keep class dji.sdk.utmiss.** { *; } 121 | -keep class utmisslib.** { *; } 122 | #<------------ utmiss config end------------> -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/androidTest/java/com/dji/importSDKDemo/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.dji.importSDKDemo; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumentation test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.dji.importSDKDemo", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 28 | 29 | 30 | 31 | 39 | 40 | 41 | 42 | 43 | 46 | 47 | 48 | 49 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/main/java/com/dji/importSDKDemo/MApplication.java: -------------------------------------------------------------------------------- 1 | package com.dji.importSDKDemo; 2 | 3 | import android.app.Application; 4 | import android.content.Context; 5 | 6 | import com.secneo.sdk.Helper; 7 | 8 | public class MApplication extends Application { 9 | 10 | @Override 11 | protected void attachBaseContext(Context paramContext) { 12 | super.attachBaseContext(paramContext); 13 | Helper.install(MApplication.this); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/main/java/com/dji/importSDKDemo/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.dji.importSDKDemo; 2 | 3 | import android.Manifest; 4 | import android.content.pm.PackageManager; 5 | import android.os.AsyncTask; 6 | import android.os.Build; 7 | import android.os.Bundle; 8 | import android.content.Intent; 9 | import android.os.Handler; 10 | import android.os.Looper; 11 | import android.util.Log; 12 | import android.widget.Toast; 13 | 14 | import androidx.annotation.NonNull; 15 | import androidx.appcompat.app.AppCompatActivity; 16 | import androidx.core.app.ActivityCompat; 17 | import androidx.core.content.ContextCompat; 18 | 19 | import java.util.ArrayList; 20 | import java.util.List; 21 | import java.util.concurrent.atomic.AtomicBoolean; 22 | 23 | import dji.common.error.DJIError; 24 | import dji.common.error.DJISDKError; 25 | import dji.sdk.base.BaseComponent; 26 | import dji.sdk.base.BaseProduct; 27 | import dji.sdk.sdkmanager.DJISDKInitEvent; 28 | import dji.sdk.sdkmanager.DJISDKManager; 29 | 30 | public class MainActivity extends AppCompatActivity { 31 | 32 | private static final String TAG = MainActivity.class.getName(); 33 | public static final String FLAG_CONNECTION_CHANGE = "dji_sdk_connection_change"; 34 | private static BaseProduct mProduct; 35 | private Handler mHandler; 36 | 37 | private static final String[] REQUIRED_PERMISSION_LIST = new String[]{ 38 | Manifest.permission.BLUETOOTH, 39 | Manifest.permission.BLUETOOTH_ADMIN, 40 | Manifest.permission.VIBRATE, 41 | Manifest.permission.INTERNET, 42 | Manifest.permission.ACCESS_WIFI_STATE, 43 | Manifest.permission.ACCESS_COARSE_LOCATION, 44 | Manifest.permission.ACCESS_NETWORK_STATE, 45 | Manifest.permission.ACCESS_FINE_LOCATION, 46 | Manifest.permission.CHANGE_WIFI_STATE, 47 | Manifest.permission.RECORD_AUDIO, 48 | Manifest.permission.WRITE_EXTERNAL_STORAGE, 49 | Manifest.permission.READ_EXTERNAL_STORAGE, 50 | Manifest.permission.READ_PHONE_STATE, 51 | }; 52 | private List missingPermission = new ArrayList<>(); 53 | private AtomicBoolean isRegistrationInProgress = new AtomicBoolean(false); 54 | private static final int REQUEST_PERMISSION_CODE = 12345; 55 | 56 | @Override 57 | protected void onCreate(Bundle savedInstanceState) { 58 | super.onCreate(savedInstanceState); 59 | 60 | // When the compile and target version is higher than 22, please request the following permission at runtime to ensure the SDK works well. 61 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 62 | checkAndRequestPermissions(); 63 | } 64 | 65 | setContentView(R.layout.activity_main); 66 | 67 | //Initialize DJI SDK Manager 68 | mHandler = new Handler(Looper.getMainLooper()); 69 | 70 | } 71 | 72 | /** 73 | * Checks if there is any missing permissions, and 74 | * requests runtime permission if needed. 75 | */ 76 | private void checkAndRequestPermissions() { 77 | // Check for permissions 78 | for (String eachPermission : REQUIRED_PERMISSION_LIST) { 79 | if (ContextCompat.checkSelfPermission(this, eachPermission) != PackageManager.PERMISSION_GRANTED) { 80 | missingPermission.add(eachPermission); 81 | } 82 | } 83 | // Request for missing permissions 84 | if (missingPermission.isEmpty()) { 85 | startSDKRegistration(); 86 | } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 87 | showToast("Need to grant the permissions!"); 88 | ActivityCompat.requestPermissions(this, 89 | missingPermission.toArray(new String[missingPermission.size()]), 90 | REQUEST_PERMISSION_CODE); 91 | } 92 | 93 | } 94 | 95 | /** 96 | * Result of runtime permission request 97 | */ 98 | @Override 99 | public void onRequestPermissionsResult(int requestCode, 100 | @NonNull String[] permissions, 101 | @NonNull int[] grantResults) { 102 | super.onRequestPermissionsResult(requestCode, permissions, grantResults); 103 | // Check for granted permission and remove from missing list 104 | if (requestCode == REQUEST_PERMISSION_CODE) { 105 | for (int i = grantResults.length - 1; i >= 0; i--) { 106 | if (grantResults[i] == PackageManager.PERMISSION_GRANTED) { 107 | missingPermission.remove(permissions[i]); 108 | } 109 | } 110 | } 111 | // If there is enough permission, we will start the registration 112 | if (missingPermission.isEmpty()) { 113 | startSDKRegistration(); 114 | } else { 115 | showToast("Missing permissions!!!"); 116 | } 117 | } 118 | 119 | private void startSDKRegistration() { 120 | if (isRegistrationInProgress.compareAndSet(false, true)) { 121 | AsyncTask.execute(new Runnable() { 122 | @Override 123 | public void run() { 124 | showToast("registering, pls wait..."); 125 | 126 | DJISDKManager.getInstance().registerApp(MainActivity.this.getApplicationContext(), new DJISDKManager.SDKManagerCallback() { 127 | @Override 128 | public void onRegister(DJIError djiError) { 129 | if (djiError == DJISDKError.REGISTRATION_SUCCESS) { 130 | showToast("Register Success"); 131 | DJISDKManager.getInstance().startConnectionToProduct(); 132 | } else { 133 | showToast("Register sdk fails, please check the bundle id and network connection!"); 134 | } 135 | Log.v(TAG, djiError.getDescription()); 136 | } 137 | 138 | @Override 139 | public void onProductDisconnect() { 140 | Log.d(TAG, "onProductDisconnect"); 141 | showToast("Product Disconnected"); 142 | notifyStatusChange(); 143 | 144 | } 145 | @Override 146 | public void onProductConnect(BaseProduct baseProduct) { 147 | Log.d(TAG, String.format("onProductConnect newProduct:%s", baseProduct)); 148 | showToast("Product Connected"); 149 | notifyStatusChange(); 150 | 151 | } 152 | 153 | @Override 154 | public void onProductChanged(BaseProduct baseProduct) { 155 | 156 | } 157 | 158 | @Override 159 | public void onComponentChange(BaseProduct.ComponentKey componentKey, BaseComponent oldComponent, 160 | BaseComponent newComponent) { 161 | 162 | if (newComponent != null) { 163 | newComponent.setComponentListener(new BaseComponent.ComponentListener() { 164 | 165 | @Override 166 | public void onConnectivityChange(boolean isConnected) { 167 | Log.d(TAG, "onComponentConnectivityChanged: " + isConnected); 168 | notifyStatusChange(); 169 | } 170 | }); 171 | } 172 | Log.d(TAG, 173 | String.format("onComponentChange key:%s, oldComponent:%s, newComponent:%s", 174 | componentKey, 175 | oldComponent, 176 | newComponent)); 177 | 178 | } 179 | 180 | @Override 181 | public void onInitProcess(DJISDKInitEvent djisdkInitEvent, int i) { 182 | 183 | } 184 | 185 | @Override 186 | public void onDatabaseDownloadProgress(long l, long l1) { 187 | 188 | } 189 | 190 | }); 191 | } 192 | }); 193 | } 194 | } 195 | 196 | private void notifyStatusChange() { 197 | mHandler.removeCallbacks(updateRunnable); 198 | mHandler.postDelayed(updateRunnable, 500); 199 | } 200 | 201 | private Runnable updateRunnable = new Runnable() { 202 | 203 | @Override 204 | public void run() { 205 | Intent intent = new Intent(FLAG_CONNECTION_CHANGE); 206 | sendBroadcast(intent); 207 | } 208 | }; 209 | 210 | private void showToast(final String toastMsg) { 211 | 212 | Handler handler = new Handler(Looper.getMainLooper()); 213 | handler.post(new Runnable() { 214 | @Override 215 | public void run() { 216 | Toast.makeText(getApplicationContext(), toastMsg, Toast.LENGTH_LONG).show(); 217 | } 218 | }); 219 | 220 | } 221 | 222 | } -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJI-Mobile-SDK-Tutorials/Android-ImportAndActivateSDKInAndroidStudio/a41601c583000293d8b36b3719ec6b634be2eaa0/ImportSDKDemo/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJI-Mobile-SDK-Tutorials/Android-ImportAndActivateSDKInAndroidStudio/a41601c583000293d8b36b3719ec6b634be2eaa0/ImportSDKDemo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJI-Mobile-SDK-Tutorials/Android-ImportAndActivateSDKInAndroidStudio/a41601c583000293d8b36b3719ec6b634be2eaa0/ImportSDKDemo/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJI-Mobile-SDK-Tutorials/Android-ImportAndActivateSDKInAndroidStudio/a41601c583000293d8b36b3719ec6b634be2eaa0/ImportSDKDemo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJI-Mobile-SDK-Tutorials/Android-ImportAndActivateSDKInAndroidStudio/a41601c583000293d8b36b3719ec6b634be2eaa0/ImportSDKDemo/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJI-Mobile-SDK-Tutorials/Android-ImportAndActivateSDKInAndroidStudio/a41601c583000293d8b36b3719ec6b634be2eaa0/ImportSDKDemo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJI-Mobile-SDK-Tutorials/Android-ImportAndActivateSDKInAndroidStudio/a41601c583000293d8b36b3719ec6b634be2eaa0/ImportSDKDemo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJI-Mobile-SDK-Tutorials/Android-ImportAndActivateSDKInAndroidStudio/a41601c583000293d8b36b3719ec6b634be2eaa0/ImportSDKDemo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJI-Mobile-SDK-Tutorials/Android-ImportAndActivateSDKInAndroidStudio/a41601c583000293d8b36b3719ec6b634be2eaa0/ImportSDKDemo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJI-Mobile-SDK-Tutorials/Android-ImportAndActivateSDKInAndroidStudio/a41601c583000293d8b36b3719ec6b634be2eaa0/ImportSDKDemo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/main/res/raw/keep.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | ImportSDKDemo 3 | 4 | -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /ImportSDKDemo/app/src/test/java/com/dji/importSDKDemo/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.dji.importSDKDemo; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /ImportSDKDemo/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | google() 6 | mavenCentral() 7 | } 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:4.2.1' 10 | 11 | // NOTE: Do not place your application dependencies here; they belong 12 | // in the individual module build.gradle files 13 | } 14 | } 15 | 16 | allprojects { 17 | repositories { 18 | google() 19 | mavenCentral() 20 | } 21 | } 22 | 23 | task clean(type: Delete) { 24 | delete rootProject.buildDir 25 | } 26 | -------------------------------------------------------------------------------- /ImportSDKDemo/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx4608M 2 | android.useAndroidX=true 3 | android.enableJetifier=true -------------------------------------------------------------------------------- /ImportSDKDemo/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DJI-Mobile-SDK-Tutorials/Android-ImportAndActivateSDKInAndroidStudio/a41601c583000293d8b36b3719ec6b634be2eaa0/ImportSDKDemo/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /ImportSDKDemo/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sun Sep 29 16:38:55 CST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-all.zip 7 | -------------------------------------------------------------------------------- /ImportSDKDemo/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # Attempt to set APP_HOME 46 | # Resolve links: $0 may be a link 47 | PRG="$0" 48 | # Need this for relative symlinks. 49 | while [ -h "$PRG" ] ; do 50 | ls=`ls -ld "$PRG"` 51 | link=`expr "$ls" : '.*-> \(.*\)$'` 52 | if expr "$link" : '/.*' > /dev/null; then 53 | PRG="$link" 54 | else 55 | PRG=`dirname "$PRG"`"/$link" 56 | fi 57 | done 58 | SAVED="`pwd`" 59 | cd "`dirname \"$PRG\"`/" >/dev/null 60 | APP_HOME="`pwd -P`" 61 | cd "$SAVED" >/dev/null 62 | 63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 64 | 65 | # Determine the Java command to use to start the JVM. 66 | if [ -n "$JAVA_HOME" ] ; then 67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 68 | # IBM's JDK on AIX uses strange locations for the executables 69 | JAVACMD="$JAVA_HOME/jre/sh/java" 70 | else 71 | JAVACMD="$JAVA_HOME/bin/java" 72 | fi 73 | if [ ! -x "$JAVACMD" ] ; then 74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 75 | 76 | Please set the JAVA_HOME variable in your environment to match the 77 | location of your Java installation." 78 | fi 79 | else 80 | JAVACMD="java" 81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 82 | 83 | Please set the JAVA_HOME variable in your environment to match the 84 | location of your Java installation." 85 | fi 86 | 87 | # Increase the maximum file descriptors if we can. 88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 89 | MAX_FD_LIMIT=`ulimit -H -n` 90 | if [ $? -eq 0 ] ; then 91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 92 | MAX_FD="$MAX_FD_LIMIT" 93 | fi 94 | ulimit -n $MAX_FD 95 | if [ $? -ne 0 ] ; then 96 | warn "Could not set maximum file descriptor limit: $MAX_FD" 97 | fi 98 | else 99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 100 | fi 101 | fi 102 | 103 | # For Darwin, add options to specify how the application appears in the dock 104 | if $darwin; then 105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 106 | fi 107 | 108 | # For Cygwin, switch paths to Windows format before running java 109 | if $cygwin ; then 110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 112 | JAVACMD=`cygpath --unix "$JAVACMD"` 113 | 114 | # We build the pattern for arguments to be converted via cygpath 115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 116 | SEP="" 117 | for dir in $ROOTDIRSRAW ; do 118 | ROOTDIRS="$ROOTDIRS$SEP$dir" 119 | SEP="|" 120 | done 121 | OURCYGPATTERN="(^($ROOTDIRS))" 122 | # Add a user-defined pattern to the cygpath arguments 123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 125 | fi 126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 127 | i=0 128 | for arg in "$@" ; do 129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 131 | 132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 134 | else 135 | eval `echo args$i`="\"$arg\"" 136 | fi 137 | i=$((i+1)) 138 | done 139 | case $i in 140 | (0) set -- ;; 141 | (1) set -- "$args0" ;; 142 | (2) set -- "$args0" "$args1" ;; 143 | (3) set -- "$args0" "$args1" "$args2" ;; 144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 150 | esac 151 | fi 152 | 153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 154 | function splitJvmOpts() { 155 | JVM_OPTS=("$@") 156 | } 157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 159 | 160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 161 | -------------------------------------------------------------------------------- /ImportSDKDemo/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /ImportSDKDemo/import-summary.txt: -------------------------------------------------------------------------------- 1 | ECLIPSE ANDROID PROJECT IMPORT SUMMARY 2 | ====================================== 3 | 4 | Replaced Jars with Dependencies: 5 | -------------------------------- 6 | The importer recognized the following .jar files as third party 7 | libraries and replaced them with Gradle dependencies instead. This has 8 | the advantage that more explicit version information is known, and the 9 | libraries can be updated automatically. However, it is possible that 10 | the .jar file in your project was of an older version than the 11 | dependency we picked, which could render the project not compileable. 12 | You can disable the jar replacement in the import wizard and try again: 13 | 14 | gson-2.6.2.jar => com.google.code.gson:gson:2.6.2 15 | 16 | Potentially Missing Dependency: 17 | ------------------------------- 18 | When we replaced the following .jar files with a Gradle dependency, we 19 | inferred the dependency version number from the filename. This 20 | specific version may not actually be available from the repository. 21 | If you get a build error stating that the dependency is missing, edit 22 | the version number to for example "+" to pick up the latest version 23 | instead. (This may require you to update your code if the library APIs 24 | have changed.) 25 | 26 | gson-2.6.2.jar => version 2.6.2 in com.google.code.gson:gson:2.6.2 27 | 28 | Moved Files: 29 | ------------ 30 | Android Gradle projects use a different directory structure than ADT 31 | Eclipse projects. Here's how the projects were restructured: 32 | 33 | * AndroidManifest.xml => dJISDKLIB/src/main/AndroidManifest.xml 34 | * assets/ => dJISDKLIB/src/main/assets/ 35 | * libs/Java-WebSocket-1.3.0.jar => dJISDKLIB/libs/Java-WebSocket-1.3.0.jar 36 | * libs/arm64-v8a/libFREncrypt.so => dJISDKLIB/src/main/jniLibs/arm64-v8a/libFREncrypt.so 37 | * libs/arm64-v8a/libFlyForbid.so => dJISDKLIB/src/main/jniLibs/arm64-v8a/libFlyForbid.so 38 | * libs/arm64-v8a/libGroudStation.so => dJISDKLIB/src/main/jniLibs/arm64-v8a/libGroudStation.so 39 | * libs/arm64-v8a/libSDKRelativeJNI.so => dJISDKLIB/src/main/jniLibs/arm64-v8a/libSDKRelativeJNI.so 40 | * libs/arm64-v8a/libUpgradeVerify.so => dJISDKLIB/src/main/jniLibs/arm64-v8a/libUpgradeVerify.so 41 | * libs/arm64-v8a/libdjivideo.so => dJISDKLIB/src/main/jniLibs/arm64-v8a/libdjivideo.so 42 | * libs/arm64-v8a/libffmpeg.so => dJISDKLIB/src/main/jniLibs/arm64-v8a/libffmpeg.so 43 | * libs/arm64-v8a/libsqlcipher.so => dJISDKLIB/src/main/jniLibs/arm64-v8a/libsqlcipher.so 44 | * libs/arm64-v8a/libstlport_shared.so => dJISDKLIB/src/main/jniLibs/arm64-v8a/libstlport_shared.so 45 | * libs/arm64-v8a/libudt.so => dJISDKLIB/src/main/jniLibs/arm64-v8a/libudt.so 46 | * libs/arm64-v8a/libudtjni.so => dJISDKLIB/src/main/jniLibs/arm64-v8a/libudtjni.so 47 | * libs/arm64-v8a/libyuv2.so => dJISDKLIB/src/main/jniLibs/arm64-v8a/libyuv2.so 48 | * libs/armeabi-v7a/libFREncrypt.so => dJISDKLIB/src/main/jniLibs/armeabi-v7a/libFREncrypt.so 49 | * libs/armeabi-v7a/libFlyForbid.so => dJISDKLIB/src/main/jniLibs/armeabi-v7a/libFlyForbid.so 50 | * libs/armeabi-v7a/libGroudStation.so => dJISDKLIB/src/main/jniLibs/armeabi-v7a/libGroudStation.so 51 | * libs/armeabi-v7a/libSDKRelativeJNI.so => dJISDKLIB/src/main/jniLibs/armeabi-v7a/libSDKRelativeJNI.so 52 | * libs/armeabi-v7a/libUpgradeVerify.so => dJISDKLIB/src/main/jniLibs/armeabi-v7a/libUpgradeVerify.so 53 | * libs/armeabi-v7a/libdjivideo.so => dJISDKLIB/src/main/jniLibs/armeabi-v7a/libdjivideo.so 54 | * libs/armeabi-v7a/libffmpeg.so => dJISDKLIB/src/main/jniLibs/armeabi-v7a/libffmpeg.so 55 | * libs/armeabi-v7a/libsqlcipher.so => dJISDKLIB/src/main/jniLibs/armeabi-v7a/libsqlcipher.so 56 | * libs/armeabi-v7a/libstlport_shared.so => dJISDKLIB/src/main/jniLibs/armeabi-v7a/libstlport_shared.so 57 | * libs/armeabi-v7a/libudt.so => dJISDKLIB/src/main/jniLibs/armeabi-v7a/libudt.so 58 | * libs/armeabi-v7a/libudtjni.so => dJISDKLIB/src/main/jniLibs/armeabi-v7a/libudtjni.so 59 | * libs/armeabi-v7a/libyuv2.so => dJISDKLIB/src/main/jniLibs/armeabi-v7a/libyuv2.so 60 | * libs/converter-gson-2.0.1.jar => dJISDKLIB/libs/converter-gson-2.0.1.jar 61 | * libs/dji-sdk.jar => dJISDKLIB/libs/dji-sdk.jar 62 | * libs/dji_eventbus.jar => dJISDKLIB/libs/dji_eventbus.jar 63 | * libs/dji_gson.jar => dJISDKLIB/libs/dji_gson.jar 64 | * libs/eventbus-3.0.0.jar => dJISDKLIB/libs/eventbus-3.0.0.jar 65 | * libs/okhttp-3.2.0.jar => dJISDKLIB/libs/okhttp-3.2.0.jar 66 | * libs/okio-1.7.0.jar => dJISDKLIB/libs/okio-1.7.0.jar 67 | * libs/retrofit-2.0.1.jar => dJISDKLIB/libs/retrofit-2.0.1.jar 68 | * libs/rxandroid-1.1.0.jar => dJISDKLIB/libs/rxandroid-1.1.0.jar 69 | * libs/rxjava-1.1.2.jar => dJISDKLIB/libs/rxjava-1.1.2.jar 70 | * libs/rxjava-computation-expressions-0.21.1.jar => dJISDKLIB/libs/rxjava-computation-expressions-0.21.1.jar 71 | * libs/sqlbrite-0.6.2.jar => dJISDKLIB/libs/sqlbrite-0.6.2.jar 72 | * libs/sqlcipher.jar => dJISDKLIB/libs/sqlcipher.jar 73 | * libs/x86/libFREncrypt.so => dJISDKLIB/src/main/jniLibs/x86/libFREncrypt.so 74 | * libs/x86/libFlyForbid.so => dJISDKLIB/src/main/jniLibs/x86/libFlyForbid.so 75 | * libs/x86/libGroudStation.so => dJISDKLIB/src/main/jniLibs/x86/libGroudStation.so 76 | * libs/x86/libSDKRelativeJNI.so => dJISDKLIB/src/main/jniLibs/x86/libSDKRelativeJNI.so 77 | * libs/x86/libUpgradeVerify.so => dJISDKLIB/src/main/jniLibs/x86/libUpgradeVerify.so 78 | * libs/x86/libdjivideo.so => dJISDKLIB/src/main/jniLibs/x86/libdjivideo.so 79 | * libs/x86/libffmpeg.so => dJISDKLIB/src/main/jniLibs/x86/libffmpeg.so 80 | * libs/x86/libsqlcipher.so => dJISDKLIB/src/main/jniLibs/x86/libsqlcipher.so 81 | * libs/x86/libstlport_shared.so => dJISDKLIB/src/main/jniLibs/x86/libstlport_shared.so 82 | * libs/x86/libudt.so => dJISDKLIB/src/main/jniLibs/x86/libudt.so 83 | * libs/x86/libudtjni.so => dJISDKLIB/src/main/jniLibs/x86/libudtjni.so 84 | * libs/x86/libyuv2.so => dJISDKLIB/src/main/jniLibs/x86/libyuv2.so 85 | * res/ => dJISDKLIB/src/main/res/ 86 | * arrow_v02.3DS => arrow_v02.3ds 87 | 88 | Next Steps: 89 | ----------- 90 | You can now build the project. The Gradle project needs network 91 | connectivity to download dependencies. 92 | 93 | Bugs: 94 | ----- 95 | If for some reason your project does not build, and you determine that 96 | it is due to a bug or limitation of the Eclipse to Gradle importer, 97 | please file a bug at http://b.android.com with category 98 | Component-Tools. 99 | 100 | (This import summary is for your information only, and can be deleted 101 | after import once you are satisfied with the results.) 102 | -------------------------------------------------------------------------------- /ImportSDKDemo/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | 2 | The MIT License (MIT) 3 | Copyright (c) 2019 DJI 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Android-ImportAndActivateSDKInAndroidStudio 2 | 3 | ## Introduction 4 | 5 | This demo is designed for you to learn how to import and activate DJI SDK in your Android Studio project. 6 | 7 | ## Requirements 8 | 9 | - Android Studio 4.2.1 10 | - Android System 5.0.0+ 11 | - DJI Android SDK 4.16.1 12 | 13 | ## Tutorial 14 | 15 | For this demo's tutorial: **Integrate SDK into Application**, please refer to . 16 | 17 | ## Feedback 18 | 19 | We’d love to hear your feedback on this demo and tutorial. 20 | 21 | Please use [DJI Support] (https://djisdksupport.zendesk.com/hc/requests/new) when you meet any problems of using this demo. At a minimum please let us know: 22 | 23 | * Which DJI Product you are using? 24 | * Which Android Device and Android system version you are using? 25 | * Which Android Studio version you are using? 26 | * A short description of your problem includes debugging logs or screenshots. 27 | * Any bugs or typos you come across. 28 | 29 | ## License 30 | 31 | Android-ImportAndActivateSDKInAndroidStudio is available under the MIT license. Please see the LICENSE file for more info. 32 | 33 | ## Join Us 34 | 35 | DJI is looking for all kinds of Software Engineers to continue building the Future of Possible. Available positions in Shenzhen, China and around the world. If you are interested, please send your resume to . For more details, and list of all our global offices, please check . 36 | 37 | DJI 招软件工程师啦,based在深圳,如果你想和我们一起把DJI产品做得更好,请发送简历到 . 详情请浏览 . 38 | --------------------------------------------------------------------------------