package Ġcom . vip ulas ri . jet instagram . ui . components Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . view . ViewGroup . LayoutParams . MATCH _ PARENT Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . Disposable Effect Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . compose . ui . platform . Local Context Ċ import Ġandroidx . compose . ui . view interop . Android View Ċ import Ġcom . google . android . ex op layer 2 . C Ċ import Ġcom . google . android . ex op layer 2 . Player Ċ import Ġcom . google . android . ex op layer 2 . Simple Exo Player Ċ import Ġcom . google . android . ex op layer 2 . source . Progress ive Media Source Ċ import Ġcom . google . android . ex op layer 2 . ui . AspectRatio Frame Layout Ċ import Ġcom . google . android . ex op layer 2 . ui . Player View Ċ import Ġcom . google . android . ex op layer 2 . upstream . DataSource Ċ import Ġcom . google . android . ex op layer 2 . upstream . Default DataSource Factory Ċ import Ġcom . google . android . ex op layer 2 . util . Util Ċ Ċ @ Composable Ċ fun ĠVideo Player ( uri : ĠUri ) Ġ{ ĊĠĠĠ Ġval Ġcontext Ġ= ĠLocal Context . current ĊĊĠĠĠ Ġval Ġex o Player Ġ= Ġremember Ġ{ ĊĠĠĠĠĠĠĠ ĠSimple Exo Player . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdataSource Factory : ĠDataSource . Factory Ġ= ĠDefault DataSource Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtil . getUser Agent ( context , Ġcontext . packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Ġ= ĠProgress ive Media Source . Factory ( dataSource Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Media Source ( uri ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . prepare ( source ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġex o Player . play When Ready Ġ= Ġtrue ĊĠĠĠ Ġex o Player . video Scaling Mode Ġ= ĠC . VIDEO _ SCAL ING _ MODE _ SCALE _ TO _ FIT _ WITH _ C RO PP ING ĊĠĠĠ Ġex o Player . repeat Mode Ġ= ĠPlayer . REPEAT _ MODE _ ONE Ċ Ċ /* ĠĠĠ ĠAndroid View ( factory Ġ= Ġ{ ĊĠĠĠĠĠĠĠ ĠPlayer View ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Controller () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Controller Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresize Mode Ġ= ĠAs pect Ratio Frame Layout . RE SIZE _ MODE _ ZO OM ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Ġ= Ġex o Player ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠFrame Layout . LayoutParams ( MATCH _ PARENT , ĠMATCH _ PARENT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) */ ĊĊĠĠĠ ĠDis posable Effect ( Android View ( factory Ġ= Ġ{ ĊĠĠĠĠĠĠĠ ĠPlayer View ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Controller () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Controller Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresize Mode Ġ= ĠAs pect Ratio Frame Layout . RE SIZE _ MODE _ ZO OM ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Ġ= Ġex o Player ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠFrame Layout . LayoutParams ( MATCH _ PARENT , ĠMATCH _ PARENT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ})) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Dispose Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex o Player . release () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }