package Ġme . v ad ik . ex if Ċ Ċ import Ġandroid . Manifest . permission . WRITE _ EXTERNAL _ STORAGE Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent . ACTION _ VIEW Ċ import Ġandroid . content . pm . PackageManager . PERMISSION _ GRAN TED Ċ import Ġandroid . support . media . Ex if Interface Ċ import Ġandroid . support . media . Ex if Interface .* Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Environment Ċ import Ġandroid . os . Environment . DIRECTORY _ PI CTURE S Ċ import Ġandroid . provider . Settings . ACTION _ APPLICATION _ DETAILS _ SETTINGS Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . widget . Button Ċ import Ġjava . io . File Ċ import Ġjava . io . File OutputStream Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDIRECTORY Ġ= ĠEnvironment . get External Storage Public Directory ( DIRECTORY _ PI CTURE S ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġinit Button ( R . id . button 0 , ĠOR IENTATION _ UNDEFINED ) ĊĠĠĠĠĠĠĠ Ġinit Button ( R . id . button 1 , ĠOR IENTATION _ NORMAL ) ĊĠĠĠĠĠĠĠ Ġinit Button ( R . id . button 2 , ĠOR IENTATION _ FLI P _ HORIZONTAL ) ĊĠĠĠĠĠĠĠ Ġinit Button ( R . id . button 3 , ĠOR IENTATION _ ROT ATE _ 1 8 0 ) ĊĠĠĠĠĠĠĠ Ġinit Button ( R . id . button 4 , ĠOR IENTATION _ FLI P _ VERTICAL ) ĊĠĠĠĠĠĠĠ Ġinit Button ( R . id . button 5 , ĠOR IENTATION _ TRANS POSE ) ĊĠĠĠĠĠĠĠ Ġinit Button ( R . id . button 6 , ĠOR IENTATION _ ROT ATE _ 9 0 ) ĊĠĠĠĠĠĠĠ Ġinit Button ( R . id . button 7 , ĠOR IENTATION _ TRANS VERSE ) ĊĠĠĠĠĠĠĠ Ġinit Button ( R . id . button 8 , ĠOR IENTATION _ ROT ATE _ 2 7 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( this , ĠWRITE _ EXTERNAL _ STORAGE ) Ġ!= ĠPER MISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠACTION _ APPLICATION _ DETAILS _ SETTINGS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri . from Parts (" package ", ĠpackageName , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Button ( button Res Id : ĠInt , Ġorientation : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbutton Ġ= ĠfindViewById ( button Res Id ) Ġas ĠButton ĊĠĠĠĠĠĠĠ Ġbutton . text Ġ= ĠgetString ( R . string . button _ text , Ġorientation ) ĊĠĠĠĠĠĠĠ Ġbutton . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠoutputFile Ġ= ĠFile ( DIRECTORY , Ġ"$ orientation . jpg ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassets . open ( getString ( R . string . input _ filename )). use Ġ{ Ġinput Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFileOutputStream ( outputFile ). use Ġ{ Ġoutput Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . copy To ( output ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠoutputFile . set Orientation ( orientation ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( ACTION _ VIEW ). setData And Type ( Uri . from File ( outputFile ), Ġ" image /* ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠFile . set Orientation ( orientation : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠEx if Interface ( path ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Attribute ( TAG _ OR IENTATION , Ġorientation . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Attributes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ