/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 . ĠHu awei ĠTechnologies ĠCo ., ĠLtd . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat ĊĊĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 ĊĊ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . hu awei . h ms . image . vision . sample Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . content . File Provider Ċ import Ġandroidx . core . content . Permission Checker Ċ import Ġcom . hu awei . h ms . image . vision . sample . Image Kit Vision MainActivity Ċ import Ġcom . hu awei . secure . android . common . intent . Safe Intent Ċ import Ġcom . hu awei . secure . android . common . util . Logs Util Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠThe Ġ ĠImage Kit Vision Ġactivity . Ċ Ġ* Ċ Ġ* Ġ@ author Ġhu awei Ċ Ġ* Ġ@ since Ġ 1 . 0 . 3 . 3 0 0 Ċ Ġ*/ Ċ class ĠImage Kit Vision MainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġbtn _ filter : ĠButton ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġbtn _ theme tag : ĠButton ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġbtn _ smart layout : ĠButton ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġbtn _ st icker : ĠButton ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġbtn _ crop : ĠButton ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġm Permission List : ĠMutable List < String > Ġ= ĊĠĠĠĠĠĠĠ ĠArrayList () ĊĠĠĠ Ġvar Ġpermissions Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠ ĠManifest . permission . READ _ PHONE _ STATE , ĊĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ F INE _ LOCATION , ĊĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ CO AR SE _ LOCATION , ĊĠĠĠĠĠĠĠ ĠManifest . permission . WRITE _ EXTERNAL _ STORAGE , ĊĠĠĠĠĠĠĠ ĠManifest . permission . READ _ EXTERNAL _ STORAGE ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval Ġm Request Code Ġ= Ġ 1 0 0 ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġbtn _ filter Ġ= ĠfindViewById ( R . id . btn _ filter ) ĊĠĠĠĠĠĠĠ Ġbtn _ theme tag Ġ= ĠfindViewById ( R . id . btn _ theme tag ) ĊĠĠĠĠĠĠĠ Ġbtn _ smart layout Ġ= ĠfindViewById ( R . id . btn _ smart layout ) ĊĠĠĠĠĠĠĠ Ġbtn _ st icker Ġ= ĠfindViewById ( R . id . btn _ st icker ) ĊĠĠĠĠĠĠĠ Ġbtn _ crop Ġ= ĠfindViewById ( R . id . btn _ crop ) ĊĠĠĠĠĠĠĠ Ġbtn _ filter ?. setOnClickListener ( View . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent 1 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this @ Image Kit Vision MainActivity , ĠFilter Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent 1 ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbtn _ smart layout ?. setOnClickListener ( View . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent 1 Ġ= ĠIntent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Image Kit Vision MainActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSmart Layout Activity :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent 1 ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbtn _ theme tag ?. setOnClickListener ( View . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent 1 Ġ= ĠIntent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Image Kit Vision MainActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTheme Tag Activity :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent 1 ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbtn _ st icker ?. setOnClickListener ( View . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent 1 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this @ Image Kit Vision MainActivity , ĠSt icker Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent 1 ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbtn _ crop ?. setOnClickListener ( View . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetBy Album ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Image Kit Vision MainActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGET _ BY _ C ROP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Permission () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Wrong Constant ") ĊĠĠĠ Ġprivate Ġfun Ġinit Permission () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠClear Ġthe Ġpermissions Ġthat Ġfail Ġthe Ġverification . ĊĠĠĠĠĠĠĠ Ġm Permission List . clear () ĊĠĠĠĠĠĠĠ Ġ// Check Ġwhether Ġthe Ġrequired Ġpermissions Ġare Ġgranted . ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġpermissions . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Permission Checker . check Self Permission ( this , Ġpermissions [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd Ġpermissions Ġthat Ġhave Ġnot Ġbeen Ġgranted . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Permission List . add ( permissions [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Apply Ġfor Ġpermissions . ĊĠĠĠĠĠĠĠ Ġif Ġ( m Permission List . size Ġ> Ġ 0 ) Ġ{ Ġ// The Ġpermission Ġhas Ġnot Ġbeen Ġgranted . ĠPlease Ġapply Ġfor Ġthe Ġpermission . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , Ġpermissions , Ġm Request Code ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProcess Ġthe Ġobtained Ġimage . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Activity Result ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠĠĠĠĠ ĠresultCode : ĠInt , ĊĠĠĠĠĠĠĠ Ġdata : ĠIntent ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( null Ġ!= Ġdata ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri : ĠUri ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGET _ BY _ C ROP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent : ĠIntent Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSafe Intent ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuri Ġ= Ġintent . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent 4 Ġ= ĠIntent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Image Kit Vision MainActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC rop Image Activity :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent 4 . putExtra (" uri ", Ġuri . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogs Util . i (" on Activity Result ", Ġ" Exception ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , Ġpermissions : ĠArray < String >, ĊĠĠĠĠĠĠĠ Ġgrant Results : ĠInt Array ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grant Results . size Ġ> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġgrant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcamera Intent Ġ= ĠIntent ( Media Store . ACTION _ IMAGE _ CAPTURE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphoto URI Ġ= ĠFile Provider . get Uri For File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Image Kit Vision MainActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Image Kit Vision MainActivity . application Context ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. packageName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ". file provider ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( context !!. files Dir , Ġ" temp . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Intent . putExtra ( Media Store . EXTRA _ OUTPUT , Ġphoto URI ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Intent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGET _ BY _ CAMERA ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Image Kit Vision MainActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" No Ġpermission .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" MainActivity " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠGET _ BY _ C ROP Ġ= Ġ 8 0 4 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠGET _ BY _ AL BU M 1 Ġ= Ġ 8 0 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠGET _ BY _ CAMERA Ġ= Ġ 8 0 5 ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠObtain Ġpictures Ġfrom Ġthe Ġalbum ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠgetBy Album ( act : ĠActivity , Ġtype : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġget Album Ġ= ĠIntent ( Intent . ACTION _ GET _ CONTENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Album . type Ġ= Ġ" image /* " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġact . startActivity For Result ( get Album , Ġtype ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }