package Ġcom . e je _ c . mult il ink . data Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Environment Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . tele phony . Tele phony Manager Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠVR Ġdevice Ġinformation . Ċ Ġ*/ Ċ class ĠDevice Info ( val Ġ ime i : ĠString , Ġval Ġname : ĠString , Ġval Ġvideos : ĠList < Video Info >) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠVideo Ġmetadata Ġin ĠVR Ġdevice . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠVideo Info ( val Ġname : ĠString , Ġval Ġpath : ĠString , Ġval Ġlength : ĠLong ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Hardware Ids ") ĊĠĠĠĠĠĠĠ Ġfun Ġget ( context : ĠContext ): ĠDevice Info Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtele phony Manager Ġ= Ġcontext . getSystem Service ( Context . TELE PHONY _ SERVICE ) Ġas ĠTele phony Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ ime i Ġ= Ġtele phony Manager . deviceId Ġ?: ĠSettings . Secure . ANDROID _ ID ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvideo List Ġ= Ġget VR Videos ( context ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDevice Info ( ime i , Ġ"${ Build . B RAND }: Ġ${ Build . MODEL }", Ġvideo List ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ç«¯ æľ« åĨħ ãģ« ãģĤãĤĭ VR åĭķ çĶ» ãĤĴ è¿Ķ ãģĻ ãĢĤ VR åĭķ çĶ» ãģ§ãģĤãĤĭ ãģĭ ãģ© ãģĨ ãģĭ ãģ¯ åĭķ çĶ» ãģ® ãĤ¢ ãĤ¹ ãĥļ ãĤ¯ãĥĪ æ¯Ķ ãģĮ 2 : 1 ãģ¾ãģŁãģ¯ 1 : 1 ãģ§ãģĤãĤĭ ãģĭ ãģ© ãģĨ ãģĭ ãģ«ãĤĪ ãģ£ãģ¦ åĪ¤æĸŃ ãģĻãĤĭ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget VR Videos ( context : ĠContext ): ĠList < Video Info > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ç«¯ æľ« åĨħ ãģ® åĭķ çĶ» ãĤĴåıĸå¾Ĺ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcursor OrNull : ĠCursor ? Ġ= ĠMedia Store . Video . query ( context . content Resolver , ĠMedia Store . Video . Media . EXTERNAL _ CONTENT _ URI , ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Video Columns . TITLE , ĠĠĠ Ġ// Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Video Columns . DATA , ĠĠĠĠ Ġ// Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Video Columns . DURATION , Ġ// Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Video Columns . WIDTH , ĠĠĠ Ġ// Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Video Columns . HEIGHT ĠĠĠ Ġ// Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor OrNull ?. use Ġ{ Ġcursor Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcursor . map Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġget Int ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġget Int ( 4 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 : 1 Ġ ãģ¾ãģŁãģ¯ Ġ 1 : 1 Ġãģ® åĭķ çĶ» ãģ® ãģ¿ ãĥķãĤ£ ãĥ« ãĤ¿ ãĥª ãĥ³ãĤ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( width Ġ== Ġheight Ġ* Ġ 2 Ġ|| Ġwidth Ġ== Ġheight ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠgetString ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠFile ( getString ( 1 )). relative To ( Environment . get External Storage Directory ()). path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġget Long ( 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVideo Info ( name , Ġpath , Ġlength ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreate ĠList Ġfrom ĠCursor . Ġ[ callback ] Ġis Ġcalled Ġper Ġrow . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > ĠCursor . map ( callback : ĠCursor . () Ġ-> ĠT ?): ĠList < T > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < T >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ+= Ġcallback () Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ