Site icon C1CTech

Android getting started with DS Photo Editor SDK

&NewLine;<p>This post is about how to integrate DS Photo Editor SDK into your android apps with the help of a simple ImageEditor App&period;<&sol;p> &NewLine; &NewLine; &NewLine; &NewLine;<div class&equals;"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-a89b3969 wp-block-buttons-is-layout-flex"> &NewLine;<div class&equals;"wp-block-button"><strong><a class&equals;"wp-block-button&lowbar;&lowbar;link has-white-color has-text-color has-background" style&equals;"background-color&colon; &num;130367&semi;" href&equals;"https&colon;&sol;&sol;github&period;com&sol;arunk7839&sol;ImageEditorApp">DOWNLOAD CODE<&sol;a><&sol;strong><&sol;div> &NewLine;<&sol;div> &NewLine; &NewLine; &NewLine; &NewLine;<h4> <&sol;h4> &NewLine;<p><amp-youtube layout&equals;"responsive" width&equals;"1200" height&equals;"675" data-videoid&equals;"4VcIuv6oU8M" title&equals;"Android getting started with DS Photo Editor SDK"><a placeholder href&equals;"https&colon;&sol;&sol;youtu&period;be&sol;4VcIuv6oU8M"><img src&equals;"https&colon;&sol;&sol;i&period;ytimg&period;com&sol;vi&sol;4VcIuv6oU8M&sol;hqdefault&period;jpg" layout&equals;"fill" object-fit&equals;"cover" alt&equals;"Android getting started with DS Photo Editor SDK"><&sol;a><&sol;amp-youtube><&sol;p> &NewLine;<h3><span style&equals;"color&colon; &num;000080&semi;"><strong>Creating new project<&sol;strong><&sol;span><&sol;h3> &NewLine;<p>1 &period; Create a new project by going to <span style&equals;"color&colon; &num;008000&semi;"><strong>File &Implies; New Android Project<&sol;strong><&sol;span>&comma; select <span style&equals;"color&colon; &num;008000&semi;"><strong>Empty<&sol;strong><&sol;span> Activity&comma; provide <span style&equals;"color&colon; &num;008000&semi;"><strong>app<&sol;strong><&sol;span> name&comma; select language to <span style&equals;"color&colon; &num;008000&semi;"><strong>kotlin<&sol;strong><&sol;span> and then finally click on <span style&equals;"color&colon; &num;0000ff&semi;"><strong>finish<&sol;strong><&sol;span>&period;<&sol;p> &NewLine;<p>2 &period; Download the SDK from <span style&equals;"color&colon; &num;000080&semi;"><strong><a style&equals;"color&colon; &num;000080&semi;" href&equals;"https&colon;&sol;&sol;www&period;dsphotoeditor&period;com&sol;android">here<&sol;a><&sol;strong><&sol;span>&period; Now go to <strong><span style&equals;"color&colon; &num;0000ff&semi;">Android-SDK-Files&bsol;Android SDK Files&bsol;SDK<&sol;span> <&sol;strong>and then Copy downloaded <strong><span style&equals;"color&colon; &num;008000&semi;">&&num;8220&semi;ds-photo-editor-sdk-v10&period;aar&&num;8221&semi;<&sol;span><&sol;strong>  into your project&&num;8217&semi;s <strong><span style&equals;"color&colon; &num;008000&semi;">&sol;libs<&sol;span><&sol;strong> directory&period; Create this directory if it doesn&&num;8217&semi;t already exist in your project&period;<&sol;p> &NewLine;<p> &NewLine; &NewLine;<&sol;p> &NewLine;<p><img class&equals;"size-full wp-image-3179 aligncenter" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2022&sol;04&sol;abc&period;png" alt&equals;"" width&equals;"332" height&equals;"255" &sol;><&sol;p> &NewLine;<p>3&period; Open the project-level build&period;gradle&comma; and update the repositories section as below&period;<&sol;p> &NewLine;<p><span style&equals;"color&colon; &num;0000ff&semi;"><strong>build&period;gradle &lpar;project-level&rpar;<&sol;strong><&sol;span><&sol;p> &NewLine;<pre>allprojects &lbrace;<br &sol;> repositories &lbrace;<br &sol;> <strong><span style&equals;"color&colon; &num;008000&semi;">jcenter&lpar;&rpar;<&sol;span><&sol;strong><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> google&lpar;&rpar;<&sol;span><&sol;strong><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> flatDir &lbrace;<&sol;span><&sol;strong><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> dirs 'libs'&rcub;<&sol;span><&sol;strong><br &sol;> &rcub;<br &sol;>&rcub;<&sol;pre> &NewLine;<p>4&period; Open the app-level build&period;gradle file&comma; and update <span style&equals;"color&colon; &num;008000&semi;"><strong>defaultConfig<&sol;strong><&sol;span> and <span style&equals;"color&colon; &num;008000&semi;"><strong>dependencies<&sol;strong><&sol;span> as below&period;<&sol;p> &NewLine;<p><span style&equals;"color&colon; &num;0000ff&semi;"><strong>build&period;gradle &lpar;app-level&rpar;<&sol;strong><&sol;span><&sol;p> &NewLine;<pre>android &lbrace;<br &sol;> compileSdk 31<br &sol;> defaultConfig &lbrace;<br &sol;> applicationId "com&period;c1ctech&period;imageeditorapp"<br &sol;> minSdk 23<br &sol;> targetSdk 31<br &sol;> versionCode 1<br &sol;> versionName "1&period;0"<br &sol;> testInstrumentationRunner "androidx&period;test&period;runner&period;AndroidJUnitRunner"<br &sol;> <span style&equals;"color&colon; &num;008000&semi;"><strong> renderscriptTargetApi 21<&sol;strong><&sol;span><br &sol;><span style&equals;"color&colon; &num;008000&semi;"><strong> renderscriptSupportModeEnabled true<&sol;strong><&sol;span><br &sol;> &rcub;<br &sol;><br &sol;> buildTypes &lbrace;<br &sol;> release &lbrace;<br &sol;> minifyEnabled false<br &sol;> proguardFiles getDefaultProguardFile&lpar;'proguard-android-optimize&period;txt'&rpar;&comma; 'proguard-rules&period;pro'<br &sol;> &rcub;<br &sol;> &rcub;<br &sol;> compileOptions &lbrace;<br &sol;> sourceCompatibility JavaVersion&period;VERSION&lowbar;1&lowbar;8<br &sol;> targetCompatibility JavaVersion&period;VERSION&lowbar;1&lowbar;8<br &sol;> &rcub;<br &sol;> kotlinOptions &lbrace;<br &sol;> jvmTarget &equals; '1&period;8'<br &sol;> &rcub;<br &sol;><br &sol;><span style&equals;"color&colon; &num;0000ff&semi;"><strong>&sol;&sol;to enable viewBinding<&sol;strong><&sol;span><br &sol;><span style&equals;"color&colon; &num;0000ff&semi;"><strong>&sol;&sol;not a part of ds photo editor integration<&sol;strong><&sol;span><br &sol;> <span style&equals;"color&colon; &num;008000&semi;"><strong>viewBinding &lbrace;<&sol;strong><&sol;span><br &sol;><span style&equals;"color&colon; &num;008000&semi;"><strong> enabled &equals; true<&sol;strong><&sol;span><br &sol;><span style&equals;"color&colon; &num;008000&semi;"><strong> &rcub;<&sol;strong><&sol;span><br &sol;>&rcub;<br &sol;><br &sol;>dependencies &lbrace;<br &sol;> implementation 'androidx&period;core&colon;core-ktx&colon;1&period;7&period;0'<br &sol;> implementation 'androidx&period;appcompat&colon;appcompat&colon;1&period;4&period;1'<br &sol;> implementation 'com&period;google&period;android&period;material&colon;material&colon;1&period;5&period;0'<br &sol;> implementation 'androidx&period;constraintlayout&colon;constraintlayout&colon;2&period;1&period;3'<br &sol;> testImplementation 'junit&colon;junit&colon;4&period;13&period;2'<br &sol;> androidTestImplementation 'androidx&period;test&period;ext&colon;junit&colon;1&period;1&period;3'<br &sol;> androidTestImplementation 'androidx&period;test&period;espresso&colon;espresso-core&colon;3&period;4&period;0'<br &sol;><br &sol;> <strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; DS Photo Editor SDK<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;0000ff&semi;"> implementation&lpar;name&colon;'ds-photo-editor-sdk-v10'&comma; ext&colon;'aar'&rpar;<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; SDK related dependencies<&sol;span><&sol;strong><br &sol;><br &sol;> <strong><span style&equals;"color&colon; &num;0000ff&semi;">implementation "io&period;reactivex&period;rxjava3&colon;rxjava&colon;3&period;1&period;4"<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;0000ff&semi;"> implementation 'io&period;reactivex&period;rxjava3&colon;rxandroid&colon;3&period;0&period;0'<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;0000ff&semi;"> implementation 'com&period;github&period;bumptech&period;glide&colon;glide&colon;4&period;13&period;0'<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;0000ff&semi;"> annotationProcessor 'com&period;github&period;bumptech&period;glide&colon;compiler&colon;4&period;13&period;0'<&sol;span><&sol;strong><br &sol;>&rcub;<&sol;pre> &NewLine;<p>5&period; Open the <span style&equals;"color&colon; &num;008000&semi;"><strong>AndroidManifest&period;xml<&sol;strong><&sol;span> file and add the below changes as shown below&colon;<&sol;p> &NewLine;<ul> &NewLine;<li>Photo editing apps need more memories than normal apps&comma; so make sure to set <span style&equals;"color&colon; &num;008000&semi;"><strong>android&colon;largeHeap<&sol;strong><&sol;span> to be true in your application declaration&period;<&sol;li> &NewLine;<li>Update the manifest file to include the SDK activities and required permissions&period;<&sol;li> &NewLine;<&sol;ul> &NewLine;<p><span style&equals;"color&colon; &num;0000ff&semi;"><strong>AndroidManifest&period;xml<&sol;strong><&sol;span><&sol;p> &NewLine;<pre>&lt&semi;&quest;xml version&equals;"1&period;0" encoding&equals;"utf-8"&quest;&gt&semi;<br &sol;>&lt&semi;manifest xmlns&colon;android&equals;"http&colon;&sol;&sol;schemas&period;android&period;com&sol;apk&sol;res&sol;android"<br &sol;> package&equals;"com&period;c1ctech&period;imageeditorapp"&gt&semi;<br &sol;><br &sol;> <strong><span style&equals;"color&colon; &num;008000&semi;"> &lt&semi;uses-permission android&colon;name&equals;"android&period;permission&period;INTERNET" &sol;&gt&semi;<&sol;span><&sol;strong><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &lt&semi;uses-permission android&colon;name&equals;"android&period;permission&period;WRITE&lowbar;EXTERNAL&lowbar;STORAGE" &sol;&gt&semi;<&sol;span><&sol;strong><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &lt&semi;uses-permission android&colon;name&equals;"android&period;permission&period;ACCESS&lowbar;NETWORK&lowbar;STATE" &sol;&gt&semi;<&sol;span><&sol;strong><br &sol;><br &sol;> &lt&semi;application<br &sol;> android&colon;allowBackup&equals;"true"<br &sol;> android&colon;icon&equals;"&commat;mipmap&sol;ic&lowbar;launcher"<br &sol;> android&colon;label&equals;"&commat;string&sol;app&lowbar;name"<br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> android&colon;largeHeap&equals;"true"<&sol;span><&sol;strong><br &sol;> android&colon;roundIcon&equals;"&commat;mipmap&sol;ic&lowbar;launcher&lowbar;round"<br &sol;> android&colon;supportsRtl&equals;"true"<br &sol;> android&colon;theme&equals;"&commat;style&sol;Theme&period;ImageEditorApp"&gt&semi;<br &sol;> &lt&semi;activity<br &sol;> android&colon;name&equals;"&period;MainActivity"<br &sol;> android&colon;exported&equals;"true"&gt&semi;<br &sol;> &lt&semi;intent-filter&gt&semi;<br &sol;> &lt&semi;action android&colon;name&equals;"android&period;intent&period;action&period;MAIN" &sol;&gt&semi;<br &sol;><br &sol;> &lt&semi;category android&colon;name&equals;"android&period;intent&period;category&period;LAUNCHER" &sol;&gt&semi;<br &sol;> &lt&semi;&sol;intent-filter&gt&semi;<br &sol;> &lt&semi;&sol;activity&gt&semi;<br &sol;><br &sol;> <strong><span style&equals;"color&colon; &num;008000&semi;">&lt&semi;activity<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> android&colon;name&equals;"com&period;dsphotoeditor&period;sdk&period;activity&period;DsPhotoEditorActivity"<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> android&colon;screenOrientation&equals;"portrait"<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> android&colon;theme&equals;"&commat;android&colon;style&sol;Theme&period;Holo&period;NoActionBar" &sol;&gt&semi;<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &lt&semi;activity<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> android&colon;name&equals;"com&period;dsphotoeditor&period;sdk&period;activity&period;DsPhotoEditorStickerActivity"<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> android&colon;screenOrientation&equals;"portrait"<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> android&colon;theme&equals;"&commat;android&colon;style&sol;Theme&period;Holo&period;NoActionBar" &sol;&gt&semi;<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &lt&semi;activity<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> android&colon;name&equals;"com&period;dsphotoeditor&period;sdk&period;activity&period;DsPhotoEditorTextActivity"<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> android&colon;screenOrientation&equals;"portrait"<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> android&colon;theme&equals;"&commat;android&colon;style&sol;Theme&period;Holo&period;NoActionBar"<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> android&colon;windowSoftInputMode&equals;"adjustPan" &sol;&gt&semi;<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &lt&semi;activity<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> android&colon;name&equals;"com&period;dsphotoeditor&period;sdk&period;activity&period;DsPhotoEditorCropActivity"<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> android&colon;screenOrientation&equals;"portrait"<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> android&colon;theme&equals;"&commat;android&colon;style&sol;Theme&period;Holo&period;NoActionBar" &sol;&gt&semi;<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &lt&semi;activity<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> android&colon;name&equals;"com&period;dsphotoeditor&period;sdk&period;activity&period;DsPhotoEditorDrawActivity"<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> android&colon;screenOrientation&equals;"portrait"<&sol;span><&sol;strong><br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> android&colon;theme&equals;"&commat;android&colon;style&sol;Theme&period;Holo&period;NoActionBar" &sol;&gt&semi;<br &sol;><&sol;span><&sol;strong><br &sol;> &lt&semi;&sol;application&gt&semi;<br &sol;><br &sol;>&lt&semi;&sol;manifest&gt&semi;<&sol;pre> &NewLine;<p><span style&equals;"color&colon; &num;000080&semi;"><strong>Note&colon;<&sol;strong><&sol;span> In order to save edited photos on android devices&comma; you will need to request storage permissions at run time for Android 6&period;0&plus;&period; <&sol;p>&NewLine;<&excl;-- WP QUADS Content Ad Plugin v&period; 2&period;0&period;98&period;1 -->&NewLine;<div class&equals;"quads-location quads-ad2" id&equals;"quads-ad2" style&equals;"float&colon;none&semi;margin&colon;0px&semi;">&NewLine;&NewLine;<&sol;div>&NewLine; &NewLine;<h4><span style&equals;"color&colon; &num;000080&semi;"><strong>Creating Layout File<&sol;strong><&sol;span><&sol;h4> &NewLine;<p>6&period; The below layout file defines the layout of <span style&equals;"color&colon; &num;008000&semi;"><strong>MainActivity<&sol;strong><&sol;span> which consists of a button and an imageView&period;<&sol;p> &NewLine;<p><strong><span style&equals;"color&colon; &num;0000ff&semi;">activity&lowbar;main&period;xml<&sol;span><&sol;strong><&sol;p> &NewLine;<pre>&lt&semi;&quest;xml version&equals;"1&period;0" encoding&equals;"utf-8"&quest;&gt&semi;<br &sol;>&lt&semi;LinearLayout xmlns&colon;android&equals;"http&colon;&sol;&sol;schemas&period;android&period;com&sol;apk&sol;res&sol;android"<br &sol;> xmlns&colon;app&equals;"http&colon;&sol;&sol;schemas&period;android&period;com&sol;apk&sol;res-auto"<br &sol;> xmlns&colon;tools&equals;"http&colon;&sol;&sol;schemas&period;android&period;com&sol;tools"<br &sol;> android&colon;layout&lowbar;width&equals;"match&lowbar;parent"<br &sol;> android&colon;layout&lowbar;height&equals;"match&lowbar;parent"<br &sol;> android&colon;orientation&equals;"vertical"<br &sol;> android&colon;padding&equals;"16dp"<br &sol;> tools&colon;context&equals;"&period;MainActivity"&gt&semi;<br &sol;><br &sol;> &lt&semi;Button<br &sol;> android&colon;id&equals;"&commat;&plus;id&sol;btnPickImage"<br &sol;> android&colon;layout&lowbar;width&equals;"wrap&lowbar;content"<br &sol;> android&colon;layout&lowbar;height&equals;"wrap&lowbar;content"<br &sol;> android&colon;layout&lowbar;gravity&equals;"center"<br &sol;> android&colon;text&equals;"Pick Image"<br &sol;> android&colon;textAllCaps&equals;"false"<br &sol;> app&colon;layout&lowbar;constraintBottom&lowbar;toBottomOf&equals;"parent"<br &sol;> app&colon;layout&lowbar;constraintLeft&lowbar;toLeftOf&equals;"parent"<br &sol;> app&colon;layout&lowbar;constraintRight&lowbar;toRightOf&equals;"parent"<br &sol;> app&colon;layout&lowbar;constraintTop&lowbar;toTopOf&equals;"parent" &sol;&gt&semi;<br &sol;><br &sol;> &lt&semi;ImageView<br &sol;> android&colon;id&equals;"&commat;&plus;id&sol;imageView"<br &sol;> android&colon;layout&lowbar;width&equals;"match&lowbar;parent"<br &sol;> android&colon;layout&lowbar;height&equals;"match&lowbar;parent"<br &sol;> android&colon;layout&lowbar;marginTop&equals;"8dp"<br &sol;> android&colon;adjustViewBounds&equals;"true" &sol;&gt&semi;<br &sol;><br &sol;>&lt&semi;&sol;LinearLayout&gt&semi;<&sol;pre> &NewLine;<h4><span style&equals;"color&colon; &num;000080&semi;"><strong>Complete MainActivity Code<&sol;strong><&sol;span><&sol;h4> &NewLine;<p>7&period; The MainActivity file contains the below code&colon;<&sol;p> &NewLine;<p><strong><span style&equals;"color&colon; &num;0000ff&semi;">MainActivity&period;kt<&sol;span><&sol;strong><&sol;p> &NewLine;<pre>package com&period;c1ctech&period;imageeditorapp<br &sol;><br &sol;>import android&period;app&period;Activity<br &sol;>import android&period;content&period;Intent<br &sol;>import android&period;content&period;pm&period;PackageManager<br &sol;>import android&period;net&period;Uri<br &sol;>import android&period;os&period;Build<br &sol;>import android&period;os&period;Bundle<br &sol;>import android&period;widget&period;Toast<br &sol;>import androidx&period;activity&period;result&period;ActivityResult<br &sol;>import androidx&period;activity&period;result&period;ActivityResultCallback<br &sol;>import androidx&period;activity&period;result&period;ActivityResultLauncher<br &sol;>import androidx&period;activity&period;result&period;contract&period;ActivityResultContracts<br &sol;>import androidx&period;appcompat&period;app&period;AppCompatActivity<br &sol;>import androidx&period;core&period;app&period;ActivityCompat<br &sol;>import com&period;c1ctech&period;imageeditorapp&period;databinding&period;ActivityMainBinding<br &sol;>import com&period;dsphotoeditor&period;sdk&period;activity&period;DsPhotoEditorActivity<br &sol;>import com&period;dsphotoeditor&period;sdk&period;utils&period;DsPhotoEditorConstants<br &sol;><br &sol;>class MainActivity &colon; AppCompatActivity&lpar;&rpar; &lbrace;<br &sol;><br &sol;> lateinit var activityMainBinding&colon; ActivityMainBinding<br &sol;> var imageActivityResultLauncher&colon; ActivityResultLauncher&lt&semi;Intent&gt&semi;&quest; &equals; null<br &sol;> var saveImageActivityResultLauncher&colon; ActivityResultLauncher&lt&semi;Intent&gt&semi;&quest; &equals; null<br &sol;><br &sol;> override fun onCreate&lpar;savedInstanceState&colon; Bundle&quest;&rpar; &lbrace;<br &sol;> super&period;onCreate&lpar;savedInstanceState&rpar;<br &sol;> activityMainBinding &equals; ActivityMainBinding&period;inflate&lpar;layoutInflater&rpar;<br &sol;> setContentView&lpar;activityMainBinding&period;root&rpar;<br &sol;><br &sol;> activityMainBinding&period;btnPickImage&period;setOnClickListener &lbrace;<br &sol;> checkPermission&lpar;&rpar;<br &sol;> &rcub;<br &sol;><br &sol;> imageActivityResultLauncher &equals; registerForActivityResult&lpar;<br &sol;> ActivityResultContracts&period;StartActivityForResult&lpar;&rpar;&comma;<br &sol;> ActivityResultCallback&lt&semi;ActivityResult&gt&semi;&lpar;&rpar; &lbrace;<br &sol;><br &sol;> if &lpar;it&period;resultCode &equals;&equals; Activity&period;RESULT&lowbar;OK&rpar; &lbrace;<br &sol;><br &sol;> val uri&colon; Uri&quest; &equals; it&period;data&quest;&period;data<br &sol;> var dsPhotoEditorIntent &equals; Intent&lpar;this&comma; DsPhotoEditorActivity&colon;&colon;class&period;java&rpar;<br &sol;> dsPhotoEditorIntent&period;data &equals; uri<br &sol;><br &sol;> <span style&equals;"color&colon; &num;008000&semi;"><strong>&sol;&sol; An optional parameter&comma; to specify the directory to save the output image on device's external storage&period;<&sol;strong><&sol;span><br &sol;><span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol; If the output directory is omitted&comma; the edited photo will be saved into a folder called "DS&lowbar;Photo&lowbar;Editor" by default&period;<&sol;strong><&sol;span><br &sol;> dsPhotoEditorIntent&period;putExtra&lpar;<br &sol;> DsPhotoEditorConstants&period;DS&lowbar;PHOTO&lowbar;EDITOR&lowbar;OUTPUT&lowbar;DIRECTORY&comma;<br &sol;> "Images"<br &sol;> &rpar;<br &sol;><br &sol;> val toolsToHide &equals; intArrayOf&lpar;<br &sol;> DsPhotoEditorActivity&period;TOOL&lowbar;WARMTH&comma;<br &sol;> DsPhotoEditorActivity&period;TOOL&lowbar;SATURATION&comma;<br &sol;> DsPhotoEditorActivity&period;TOOL&lowbar;VIGNETTE&comma;<br &sol;> DsPhotoEditorActivity&period;TOOL&lowbar;EXPOSURE<br &sol;> &rpar;<br &sol;><br &sol;> <strong><span style&equals;"color&colon; &num;008000&semi;">&sol;&sol; if you don't want some of the tools to show up&period;<&sol;span><&sol;strong><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; Just simply pass in the tools to hide in the UI&period;<&sol;span><&sol;strong><br &sol;> dsPhotoEditorIntent&period;putExtra&lpar;<br &sol;> DsPhotoEditorConstants&period;DS&lowbar;PHOTO&lowbar;EDITOR&lowbar;TOOLS&lowbar;TO&lowbar;HIDE&comma;<br &sol;> toolsToHide<br &sol;> &rpar;<br &sol;> saveImageActivityResultLauncher&quest;&period;launch&lpar;dsPhotoEditorIntent&rpar;<br &sol;> &rcub;<br &sol;> &rcub;&rpar;<br &sol;><br &sol;> saveImageActivityResultLauncher &equals; registerForActivityResult&lpar;<br &sol;> ActivityResultContracts&period;StartActivityForResult&lpar;&rpar;&comma;<br &sol;> ActivityResultCallback&lt&semi;ActivityResult&gt&semi;&lpar;&rpar; &lbrace;<br &sol;><br &sol;> if &lpar;it&period;resultCode &equals;&equals; Activity&period;RESULT&lowbar;OK&rpar; &lbrace;<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol;handle the result uri &comma;by displaying it in an imageView<&sol;span><&sol;strong><br &sol;> val uri&colon; Uri&quest; &equals; it&period;data&quest;&period;data<br &sol;><br &sol;> activityMainBinding&period;imageView&period;setImageURI&lpar;uri&rpar;<br &sol;> Toast&period;makeText&lpar;this&comma; "Photo Saved"&comma; Toast&period;LENGTH&lowbar;SHORT&rpar;&period;show&lpar;&rpar;<br &sol;> &rcub;<br &sol;> &rcub;&rpar;<br &sol;> &rcub;<br &sol;><br &sol;> private fun checkPermission&lpar;&rpar; &lbrace;<br &sol;> var permission &equals; ActivityCompat&period;checkSelfPermission&lpar;<br &sol;> this&comma;<br &sol;> android&period;Manifest&period;permission&period;WRITE&lowbar;EXTERNAL&lowbar;STORAGE<br &sol;> &rpar;<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol;for android version Q and above&comma; we are directly calling the pickImage&lpar;&rpar; method<&sol;span><&sol;strong><br &sol;> if &lpar;Build&period;VERSION&period;SDK&lowbar;INT &gt&semi;&equals; Build&period;VERSION&lowbar;CODES&period;Q&rpar; &lbrace;<br &sol;> pickImage&lpar;&rpar;<br &sol;> &rcub; else &lbrace;<br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol;requesting permission&comma; if permission is not granted<&sol;span><&sol;strong><br &sol;> if &lpar;permission &excl;&equals; PackageManager&period;PERMISSION&lowbar;GRANTED&rpar;<br &sol;> ActivityCompat&period;requestPermissions&lpar;<br &sol;> this&comma;<br &sol;> arrayOf&lpar;android&period;Manifest&period;permission&period;WRITE&lowbar;EXTERNAL&lowbar;STORAGE&rpar;&comma;<br &sol;> 100<br &sol;> &rpar;<br &sol;> else<br &sol;> pickImage&lpar;&rpar;<br &sol;> &rcub;<br &sol;> &rcub;<br &sol;><br &sol;> private fun pickImage&lpar;&rpar; &lbrace;<br &sol;> var intent &equals; Intent&lpar;Intent&period;ACTION&lowbar;PICK&rpar;<br &sol;> intent&period;type &equals; "image&sol;&ast;"<br &sol;> setResult&lpar;100&comma; intent&rpar;<br &sol;> imageActivityResultLauncher&quest;&period;launch&lpar;intent&rpar;<br &sol;> &rcub;<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol;Callback for the result from requesting permissions&period;<&sol;span><&sol;strong><br &sol;> override fun onRequestPermissionsResult&lpar;<br &sol;> requestCode&colon; Int&comma;<br &sol;> permissions&colon; Array&lt&semi;out String&gt&semi;&comma;<br &sol;> grantResults&colon; IntArray<br &sol;> &rpar; &lbrace;<br &sol;> super&period;onRequestPermissionsResult&lpar;requestCode&comma; permissions&comma; grantResults&rpar;<br &sol;><br &sol;> if &lpar;requestCode &equals;&equals; 100 &amp&semi;&amp&semi; grantResults&period;size &gt&semi; 0 &amp&semi;&amp&semi; grantResults&lbrack;0&rsqb; &equals;&equals; PackageManager&period;PERMISSION&lowbar;GRANTED&rpar;<br &sol;> pickImage&lpar;&rpar;<br &sol;> else<br &sol;> Toast&period;makeText&lpar;this&comma; "Permission denied"&comma; Toast&period;LENGTH&lowbar;SHORT&rpar;&period;show&lpar;&rpar;<br &sol;> &rcub;<br &sol;>&rcub;<&sol;pre> &NewLine;<p>When you run the app it will look like this&colon;<&sol;p> &NewLine;<p><img class&equals;"alignnone wp-image-3182" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2022&sol;04&sol;Screenshot&lowbar;20220411-144102&lowbar;Android-System-498x1024&period;jpg" alt&equals;"" width&equals;"344" height&equals;"708" &sol;>            <img class&equals;"alignnone wp-image-3183" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2022&sol;04&sol;Screenshot&lowbar;20220411-144145&lowbar;ImageEditorApp-498x1024&period;jpg" alt&equals;"" width&equals;"344" height&equals;"708" &sol;>&NewLine;

Exit mobile version