package Ġtech . th dev . media _ projection _ library . ui Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . media . projection . Media Projection Manager Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . activity . result . Activity Result Launcher Ċ import Ġandroidx . activity . result . contract . Activity Result Contract Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġtech . th dev . media _ projection _ library . R Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠT ae - hw an Ġon Ġ 4 / 2 5 / 1 6 . Ċ Ġ* Ġ@ since Ġ 4 / 1 2 / 2 0 ĠEdit Ġkotlin . Ċ Ġ* Ċ Ġ* ĠMedia Projection Ġmedia Projection Ġmanager Ċ Ġ*/ Ċ internal Ġclass ĠMedia Projection Access Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREQ _ CODE _ MEDIA _ PRO JECTION Ġ= Ġ 1 0 0 0 ĊĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( context : ĠContext ): ĠIntent Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( context , ĠMedia Projection Access Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ media _ projection ) ĊĠĠĠĠĠĠĠ Ġcreate Media Projection () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Media Projection () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmedia Projection Manager Ġ= Ġget System Service ( Context . MEDIA _ PRO JECTION _ SERVICE ) Ġas ĠMedia Projection Manager ĊĠĠĠĠĠĠĠ Ġval Ġresult : ĠActivity Result Launcher < Intent > Ġ= Ġregister For Activity Result ( Media Projection Result Contract ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Broadcast ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġresult . launch ( media Projection Manager . create Screen Capture Intent ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠOld Ġfor Result Ċ // ĠĠĠĠĠĠĠ ĠstartActivity For Result ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Projection Manager . create Screen Capture Intent (), Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠREQ _ CODE _ MEDIA _ PRO JECTION Ċ // ĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠREQ _ CODE _ MEDIA _ PRO JECTION Ġ-> Ġsend Broadcast ( result Code , Ġdata ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠMedia Projection Result Contract Ġ: ĠActivity Result Contract < Intent , ĠIntent >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Intent ( context : ĠContext , Ġinput : ĠIntent ?): ĠIntent Ġ= ĊĠĠĠĠĠĠĠ Ġinput !! ĊĊĠĠĠ Ġoverride Ġfun Ġparse Result ( result Code : ĠInt , Ġintent : ĠIntent ?): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK Ġ&& Ġintent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Projection Access Broadcast Receiver . newInstance ( result Code , Ġintent ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Projection Access Broadcast Receiver . new Reject () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }