package Ġcom . developer phil . adb idea . action . extend Ċ Ċ import Ġcom . developer phil . adb idea . action . A db Action Ċ import Ġcom . developer phil . adb idea . adb . A db Facade Ċ import Ġcom . developer phil . adb idea . ui . Record Option Dialog Ċ import Ġcom . intellij . openapi . action System . An ActionEvent Ċ import Ġcom . intellij . openapi . file Chooser . FileChooser Descriptor Ċ import Ġcom . intellij . openapi . file Chooser . ex . FileChooser Dialog Impl Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġorg . j desktop . swing x . util . OS Ċ import Ġorg . jetbrains . android . sdk . Android Sdk Utils Ċ import Ġjava . awt . Toolkit Ċ import Ġjava . awt . datat rans fer . String Selection Ċ import Ġjava . io . File Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby ĠX Q ĠYang Ġon Ġ 8 / 2 8 / 2 0 1 8 ĠĠ 2 : 5 3 ĠPM . Ċ Ġ* ĠDescription Ġ: Ġrecord Ġdevice Ġscreen Ġvia Ġa db Ċ Ġ*/ Ċ class ĠScreen Record Action Ġ: ĠA db Action () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġdevice Name Ġ= Ġ"" ĊĊĠĠĠ Ġval Ġvideo Name : ĠString Ġby Ġlazy Ġ{ Ġ"${ device Name }_${ date Format . format ( Date ()) }. mp 4 " Ġ} ĊĠĠĠ Ġval Ġremote Path : ĠString Ġby Ġlazy Ġ{ Ġ"/ sd card /$ video Name " Ġ} ĊĠĠĠ Ġvar ĠgetFile d Ġ= Ġfalse ĊĠĠĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAn ActionEvent , Ġproject : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ ĠA db Facade . getDevice Model ( project ) Ġ{ Ġmodel : ĠString Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevice Name Ġ= Ġmodel ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠRecord Option Dialog Ġ{ Ġdelete Remote File Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Dir Chooser Descriptor . title Ġ= Ġ" Select Ġ$ video Name Ġsave Ġto ..." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcho oser Dialog Impl Ġ= ĠFile Chooser Dialog Impl ( save Dir Chooser Descriptor , Ġproject ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchoose Ġ= Ġif Ġ( selected File Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser Dialog Impl ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. choose ( project , Ġselected File !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcho oser Dialog Impl ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. choose ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( choose . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected File Ġ= Ġchoose [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA db Facade . pull File ( project , Ġremote Path , ĠFile ( selected File ?. canonical Path , Ġvideo Name ), Ġdelete Remote File ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdialog . onStart Listener Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( OS . is Linux ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa db Ġ= ĠAndroid Sdk Utils . get A db ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( adb == null ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetFile d Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" A db Ġis Ġnull ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRuntime . get Runtime (). exec (" gnome - terminal Ġ-- window Ġ-- title = Press _ Ctrl + C _ stop _ adb _ screen record Ġ-- Ġ${ adb . absolute Path } Ġshell Ġscreen record Ġ$ remote Path ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif ( OS . is Windows ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcess Builder (" cmd ", Ġ"/ c ", Ġ" start ", Ġ" cmd ", Ġ"/ K "," adb Ġshell Ġscreen record Ġ$ remote Path "). start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġif ( OS . is Mac OSX ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToolkit . getDefault Toolkit (). system Clipboard . set Contents ( String Selection (" adb Ġshell Ġscreen record Ġ$ remote Path "), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRuntime . get Runtime (). exec (" open Ġ/ Users Ġ- a ĠTerminal ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdialog . pack () ĊĠĠĠĠĠĠĠ Ġdialog . isVisible Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġselected File : ĠVirtual File ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġsave Dir Chooser Descriptor : ĠFile Chooser Descriptor Ġ= ĠFile Chooser Descriptor ( false , Ġtrue , Ġfalse , Ġfalse , Ġfalse , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠdateFormat Ġ= ĠSimpleDateFormat (" yyyy MM dd HH mm ss ") ĊĊĠĠĠ Ġ} ĊĊ Ċ } Ċ