sync code 0310

This commit is contained in:
悟空的日常镜像仓库 2024-03-10 11:20:36 +08:00
parent f3b4375967
commit d6bf491a51
7 changed files with 867 additions and 87 deletions

BIN
apks/ui.apk Normal file

Binary file not shown.

530
kodi/guisettings.xml Executable file
View File

@ -0,0 +1,530 @@
<settings version="2">
<setting id="gamesgeneral.enable" default="true">true</setting>
<setting id="gamesgeneral.showosdhelp" default="true">true</setting>
<setting id="gamesgeneral.enableautosave" default="true">true</setting>
<setting id="gamesgeneral.enablerewind" default="true">true</setting>
<setting id="gamesgeneral.rewindtime" default="true">60</setting>
<setting id="gamesachievements.username" default="true" />
<setting id="gamesachievements.password" default="true" />
<setting id="gamesachievements.token" default="true" />
<setting id="gamesachievements.loggedin" default="true">false</setting>
<setting id="lookandfeel.skin" default="true">skin.estuary</setting>
<setting id="lookandfeel.skintheme" default="true">SKINDEFAULT</setting>
<setting id="lookandfeel.skincolors" default="true">SKINDEFAULT</setting>
<setting id="lookandfeel.font">Arial</setting>
<setting id="lookandfeel.skinzoom" default="true">0</setting>
<setting id="lookandfeel.stereostrength" default="true">5</setting>
<setting id="lookandfeel.enablerssfeeds" default="true">false</setting>
<setting id="lookandfeel.rssedit" default="true" />
<setting id="locale.language">resource.language.zh_cn</setting>
<setting id="locale.charset" default="true">DEFAULT</setting>
<setting id="locale.keyboardlayouts" default="true">English QWERTY</setting>
<setting id="locale.activekeyboardlayout" default="true">English QWERTY</setting>
<setting id="locale.country" default="true">USA (12h)</setting>
<setting id="locale.timezonecountry" default="true">default</setting>
<setting id="locale.timezone" default="true">default</setting>
<setting id="locale.shortdateformat" default="true">regional</setting>
<setting id="locale.longdateformat" default="true">regional</setting>
<setting id="locale.timeformat" default="true">regional</setting>
<setting id="locale.use24hourclock" default="true">regional</setting>
<setting id="locale.temperatureunit" default="true">regional</setting>
<setting id="locale.speedunit" default="true">regional</setting>
<setting id="screensaver.mode" default="true" />
<setting id="screensaver.time" default="true">3</setting>
<setting id="screensaver.usemusicvisinstead" default="true">true</setting>
<setting id="screensaver.usedimonpause" default="true">true</setting>
<setting id="masterlock.startuplock" default="true">false</setting>
<setting id="masterlock.maxretries" default="true">3</setting>
<setting id="lookandfeel.startupaction" default="true">0</setting>
<setting id="lookandfeel.startupwindow" default="true">10000</setting>
<setting id="window.width" default="true">720</setting>
<setting id="window.height" default="true">480</setting>
<setting id="videolibrary.updateonstartup" default="true">false</setting>
<setting id="videolibrary.backgroundupdate" default="true">false</setting>
<setting id="musiclibrary.updateonstartup" default="true">false</setting>
<setting id="musiclibrary.backgroundupdate" default="true">false</setting>
<setting id="musiclibrary.exportfiletype" default="true">0</setting>
<setting id="musiclibrary.exportfolder" default="true" />
<setting id="musiclibrary.exportitems" default="true">48</setting>
<setting id="musiclibrary.exportunscraped" default="true">false</setting>
<setting id="musiclibrary.exportoverwrite" default="true">false</setting>
<setting id="musiclibrary.exportartwork" default="true">false</setting>
<setting id="musiclibrary.exportskipnfo" default="true">false</setting>
<setting id="filelists.showparentdiritems" default="true">true</setting>
<setting id="filelists.ignorethewhensorting" default="true">true</setting>
<setting id="filelists.showextensions" default="true">true</setting>
<setting id="filelists.showaddsourcebuttons" default="true">true</setting>
<setting id="filelists.showhidden" default="true">false</setting>
<setting id="filelists.allowfiledeletion" default="true">false</setting>
<setting id="myvideos.selectaction" default="true">1</setting>
<setting id="myvideos.usetags" default="true">false</setting>
<setting id="myvideos.extractflags" default="true">true</setting>
<setting id="myvideos.extractchapterthumbs" default="true">true</setting>
<setting id="myvideos.stackvideos" default="true">false</setting>
<setting id="myvideos.replacelabels" default="true">true</setting>
<setting id="videolibrary.showallitems" default="true">true</setting>
<setting id="videolibrary.showunwatchedplots" default="true">0,1,2</setting>
<setting id="videolibrary.groupmoviesets" default="true">false</setting>
<setting id="videolibrary.groupsingleitemsets" default="true">false</setting>
<setting id="myvideos.flatten" default="true">false</setting>
<setting id="videolibrary.flattentvshows" default="true">1</setting>
<setting id="videolibrary.showemptytvshows" default="true">true</setting>
<setting id="videolibrary.tvshowsselectfirstunwatcheditem" default="true">0</setting>
<setting id="videolibrary.tvshowsincludeallseasonsandspecials" default="true">0</setting>
<setting id="videolibrary.moviesetsfolder" default="true" />
<setting id="videolibrary.musicvideosallperformers" default="true">true</setting>
<setting id="videolibrary.artsettingsupdated" default="true">false</setting>
<setting id="videolibrary.artworklevel" default="true">0</setting>
<setting id="videolibrary.movieartwhitelist" default="true" />
<setting id="videolibrary.tvshowartwhitelist" default="true" />
<setting id="videolibrary.episodeartwhitelist" default="true" />
<setting id="videolibrary.musicvideoartwhitelist" default="true" />
<setting id="videolibrary.actorthumbs" default="true">true</setting>
<setting id="myvideos.extractthumb" default="true">true</setting>
<setting id="musiclibrary.showallitems" default="true">true</setting>
<setting id="musiclibrary.showcompilationartists" default="true">true</setting>
<setting id="musiclibrary.showdiscs" default="true">true</setting>
<setting id="musiclibrary.useartistsortname" default="true">false</setting>
<setting id="musiclibrary.useoriginaldate" default="true">false</setting>
<setting id="musiclibrary.downloadinfo" default="true">false</setting>
<setting id="musiclibrary.artistsfolder" default="true" />
<setting id="musiclibrary.albumsscraper" default="true">metadata.generic.albums</setting>
<setting id="musiclibrary.artistsscraper" default="true">metadata.generic.artists</setting>
<setting id="musiclibrary.overridetags" default="true">false</setting>
<setting id="musiclibrary.artsettings" default="true">false</setting>
<setting id="musiclibrary.artworklevel" default="true">0</setting>
<setting id="musiclibrary.usealllocalart" default="true">false</setting>
<setting id="musiclibrary.useallremoteart" default="true">false</setting>
<setting id="musiclibrary.artistartwhitelist" default="true" />
<setting id="musiclibrary.albumartwhitelist" default="true" />
<setting id="musiclibrary.musicthumbs" default="true">folder.jpg, cover.jpg, cover.jpeg, thumb.jpg</setting>
<setting id="musiclibrary.preferonlinealbumart" default="true">false</setting>
<setting id="musicfiles.selectaction" default="true">false</setting>
<setting id="musicfiles.trackformat" default="true">[%N. ]%A - %T</setting>
<setting id="musicfiles.nowplayingtrackformat" default="true" />
<setting id="musicfiles.librarytrackformat" default="true" />
<setting id="musicfiles.findremotethumbs" default="true">true</setting>
<setting id="musicfiles.usetags" default="true">true</setting>
<setting id="mymusic.songthumbinvis" default="true">false</setting>
<setting id="mymusic.defaultlibview" default="true" />
<setting id="pictures.usetags" default="true">true</setting>
<setting id="pictures.generatethumbs" default="true">true</setting>
<setting id="pictures.showvideos" default="true">true</setting>
<setting id="pictures.displayresolution" default="true">14</setting>
<setting id="scrapers.moviesdefault" default="true">metadata.themoviedb.org.python</setting>
<setting id="scrapers.tvshowsdefault" default="true">metadata.tvshows.themoviedb.org.python</setting>
<setting id="scrapers.musicvideosdefault" default="true">metadata.local</setting>
<setting id="videoplayer.autoplaynextitem" default="true" />
<setting id="videoplayer.seeksteps" default="true">-600,-300,-180,-60,-30,-10,10,30,60,180,300,600</setting>
<setting id="videoplayer.seekdelay" default="true">750</setting>
<setting id="videoplayer.adjustrefreshrate" default="true">0</setting>
<setting id="videoplayer.usedisplayasclock" default="true">false</setting>
<setting id="videoplayer.errorinaspect" default="true">0</setting>
<setting id="videoplayer.stretch43" default="true">0</setting>
<setting id="videoplayer.rendermethod" default="true">0</setting>
<setting id="videoplayer.hqscalers" default="true">20</setting>
<setting id="videoplayer.usemediacodecsurface" default="true">true</setting>
<setting id="videoplayer.usemediacodec" default="true">true</setting>
<setting id="videoplayer.usedxva2" default="true">true</setting>
<setting id="videoplayer.usevtb" default="true">true</setting>
<setting id="winsystem.ishdrdisplay" default="true">true</setting>
<setting id="videoplayer.stereoscopicplaybackmode" default="true">0</setting>
<setting id="videoplayer.quitstereomodeonstop" default="true">true</setting>
<setting id="videoplayer.teletextenabled" default="true">true</setting>
<setting id="videoplayer.teletextscale" default="true">true</setting>
<setting id="musicplayer.autoplaynextitem" default="true">true</setting>
<setting id="musicplayer.queuebydefault" default="true">false</setting>
<setting id="musicplayer.seeksteps" default="true">-60,-30,-10,10,30,60</setting>
<setting id="musicplayer.seekdelay" default="true">750</setting>
<setting id="musicplayer.crossfade" default="true">0</setting>
<setting id="musicplayer.crossfadealbumtracks" default="true">true</setting>
<setting id="musicplayer.visualisation" default="true" />
<setting id="musicplayer.replaygaintype" default="true">1</setting>
<setting id="musicplayer.replaygainpreamp" default="true">89</setting>
<setting id="musicplayer.replaygainnogainpreamp" default="true">89</setting>
<setting id="musicplayer.replaygainavoidclipping" default="true">false</setting>
<setting id="dvds.autorun" default="true">false</setting>
<setting id="dvds.playerregion" default="true">0</setting>
<setting id="dvds.automenu" default="true">false</setting>
<setting id="bluray.playerregion" default="true">1</setting>
<setting id="disc.playback" default="true">0</setting>
<setting id="audiocds.autoaction" default="true">0</setting>
<setting id="audiocds.usecddb" default="true">true</setting>
<setting id="audiocds.recordingpath" default="true" />
<setting id="audiocds.trackpathformat" default="true">%A/%A - %B/[%N. ][%A - ]%T</setting>
<setting id="audiocds.encoder" default="true">audioencoder.kodi.builtin.aac</setting>
<setting id="audiocds.ejectonrip" default="true">true</setting>
<setting id="slideshow.staytime" default="true">5</setting>
<setting id="slideshow.displayeffects" default="true">true</setting>
<setting id="slideshow.shuffle" default="true">false</setting>
<setting id="slideshow.highqualitydownscaling" default="true">false</setting>
<setting id="locale.audiolanguage" default="true">mediadefault</setting>
<setting id="videoplayer.preferdefaultflag" default="true">true</setting>
<setting id="locale.subtitlelanguage" default="true">original</setting>
<setting id="accessibility.audiovisual" default="true">false</setting>
<setting id="accessibility.audiohearing" default="true">false</setting>
<setting id="accessibility.subhearing" default="true">false</setting>
<setting id="subtitles.align" default="true">2</setting>
<setting id="subtitles.fontname" default="true">DEFAULT</setting>
<setting id="subtitles.fontsize" default="true">42</setting>
<setting id="subtitles.style" default="true">0</setting>
<setting id="subtitles.colorpick" default="true">FFFFFFFF</setting>
<setting id="subtitles.opacity" default="true">100</setting>
<setting id="subtitles.bordersize" default="true">25</setting>
<setting id="subtitles.bordercolorpick" default="true">FF000000</setting>
<setting id="subtitles.blur" default="true">0</setting>
<setting id="subtitles.backgroundtype" default="true">0</setting>
<setting id="subtitles.bgcolorpick" default="true">FF000000</setting>
<setting id="subtitles.bgopacity" default="true">80</setting>
<setting id="subtitles.shadowcolor" default="true">FF000000</setting>
<setting id="subtitles.shadowopacity" default="true">100</setting>
<setting id="subtitles.shadowsize" default="true">15</setting>
<setting id="subtitles.marginvertical" default="true">4.95</setting>
<setting id="subtitles.overridefonts" default="true">false</setting>
<setting id="subtitles.overridestyles" default="true">0</setting>
<setting id="subtitles.stereoscopicdepth" default="true">0</setting>
<setting id="subtitles.charset" default="true">DEFAULT</setting>
<setting id="subtitles.parsecaptions" default="true">false</setting>
<setting id="subtitles.captionsalign" default="true">0</setting>
<setting id="subtitles.languages" default="true">English</setting>
<setting id="subtitles.storagemode" default="true">0</setting>
<setting id="subtitles.custompath" default="true" />
<setting id="subtitles.pauseonsearch" default="true">true</setting>
<setting id="subtitles.downloadfirst" default="true">false</setting>
<setting id="subtitles.tv" default="true" />
<setting id="subtitles.movie" default="true" />
<setting id="pvrmanager.syncchannelgroups" default="true">true</setting>
<setting id="pvrmanager.backendchannelorder" default="true">true</setting>
<setting id="pvrmanager.usebackendchannelnumbersalways" default="true">false</setting>
<setting id="pvrmanager.usebackendchannelnumbers" default="true">false</setting>
<setting id="pvrmanager.startgroupchannelnumbersfromone" default="true">false</setting>
<setting id="pvrmenu.iconpath" default="true" />
<setting id="epg.pastdaystodisplay" default="true">1</setting>
<setting id="epg.futuredaystodisplay" default="true">3</setting>
<setting id="epg.selectaction" default="true">2</setting>
<setting id="epg.hidenoinfoavailable" default="true">true</setting>
<setting id="epg.epgupdate" default="true">120</setting>
<setting id="epg.preventupdateswhileplayingtv" default="true">false</setting>
<setting id="pvrplayback.switchtofullscreenchanneltypes" default="true">3</setting>
<setting id="pvrmanager.preselectplayingchannel" default="true">false</setting>
<setting id="pvrmenu.displaychannelinfo" default="true">5</setting>
<setting id="pvrmenu.closechannelosdonswitch" default="true">true</setting>
<setting id="pvrplayback.confirmchannelswitch" default="true">true</setting>
<setting id="pvrplayback.channelentrytimeout" default="true">0</setting>
<setting id="pvrplayback.delaymarklastwatched" default="true">0</setting>
<setting id="pvrplayback.signalquality" default="true">true</setting>
<setting id="pvrplayback.fps" default="true">0</setting>
<setting id="pvrplayback.enableradiords" default="true">true</setting>
<setting id="pvrplayback.trafficadvisory" default="true">false</setting>
<setting id="pvrplayback.trafficadvisoryvolume" default="true">10</setting>
<setting id="pvrrecord.instantrecordaction" default="true">0</setting>
<setting id="pvrrecord.instantrecordtime" default="true">120</setting>
<setting id="pvrrecord.marginstart" default="true">0</setting>
<setting id="pvrrecord.marginend" default="true">0</setting>
<setting id="pvrrecord.timernotifications" default="true">true</setting>
<setting id="pvrrecord.grouprecordings" default="true">true</setting>
<setting id="pvrreminders.autoclosedelay" default="true">10</setting>
<setting id="pvrreminders.autorecord" default="true">true</setting>
<setting id="pvrreminders.autoswitch" default="true">false</setting>
<setting id="pvrpowermanagement.enabled" default="true">false</setting>
<setting id="pvrpowermanagement.backendidletime" default="true">15</setting>
<setting id="pvrpowermanagement.setwakeupcmd" default="true" />
<setting id="pvrpowermanagement.prewakeup" default="true">15</setting>
<setting id="pvrpowermanagement.dailywakeup" default="true">false</setting>
<setting id="pvrpowermanagement.dailywakeuptime" default="true">00:00:00</setting>
<setting id="pvrparental.enabled" default="true">false</setting>
<setting id="pvrparental.pin" default="true" />
<setting id="pvrparental.duration" default="true">300</setting>
<setting id="pvrtimers.hidedisabledtimers" default="true">false</setting>
<setting id="services.devicename" default="true">Kodi</setting>
<setting id="services.zeroconf" default="true">true</setting>
<setting id="services.deviceuuid">575bde14-911b-484b-9764-35c6d3f86f03</setting>
<setting id="services.webserver" default="true">false</setting>
<setting id="services.webserverport" default="true">8080</setting>
<setting id="services.webserverauthentication" default="true">true</setting>
<setting id="services.webserverusername" default="true">kodi</setting>
<setting id="services.webserverpassword" default="true" />
<setting id="services.webserverssl" default="true">false</setting>
<setting id="services.webskin" default="true">webinterface.default</setting>
<setting id="services.esenabled" default="true">true</setting>
<setting id="services.esport" default="true">9777</setting>
<setting id="services.esportrange" default="true">10</setting>
<setting id="services.esmaxclients" default="true">20</setting>
<setting id="services.esallinterfaces" default="true">false</setting>
<setting id="services.esinitialdelay" default="true">750</setting>
<setting id="services.escontinuousdelay" default="true">25</setting>
<setting id="services.upnp" default="true">false</setting>
<setting id="services.upnpserver" default="true">false</setting>
<setting id="services.upnpannounce" default="true">true</setting>
<setting id="services.upnplookforexternalsubtitles" default="true">false</setting>
<setting id="services.upnpcontroller" default="true">false</setting>
<setting id="services.upnprenderer" default="true">false</setting>
<setting id="services.airplay" default="true">false</setting>
<setting id="services.airplayvolumecontrol" default="true">true</setting>
<setting id="services.airplayvideosupport" default="true">false</setting>
<setting id="services.useairplaypassword" default="true">false</setting>
<setting id="services.airplaypassword" default="true" />
<setting id="smb.workgroup" default="true">WORKGROUP</setting>
<setting id="smb.winsserver" default="true">0.0.0.0</setting>
<setting id="smb.minprotocol" default="true">0</setting>
<setting id="smb.maxprotocol" default="true">3</setting>
<setting id="smb.legacysecurity" default="true">false</setting>
<setting id="services.wsdiscovery" default="true">true</setting>
<setting id="nfs.version" default="true">3</setting>
<setting id="weather.currentlocation" default="true">1</setting>
<setting id="weather.addon" default="true" />
<setting id="videoscreen.monitor" default="true">Default</setting>
<setting id="videoscreen.screen" default="true">0</setting>
<setting id="videoscreen.resolution">17</setting>
<setting id="videoscreen.screenmode" default="true">DESKTOP</setting>
<setting id="videoscreen.fakefullscreen" default="true">true</setting>
<setting id="videoscreen.blankdisplays" default="true">false</setting>
<setting id="videoscreen.delayrefreshchange" default="true">0</setting>
<setting id="videoscreen.guisdrpeakluminance" default="true">60</setting>
<setting id="videoscreen.10bitsurfaces" default="true">0</setting>
<setting id="videoscreen.dither" default="true">false</setting>
<setting id="videoscreen.ditherdepth" default="true">8</setting>
<setting id="videoscreen.cmsenabled" default="true">false</setting>
<setting id="videoscreen.cmsmode" default="true">0</setting>
<setting id="videoscreen.cms3dlut" default="true" />
<setting id="videoscreen.displayprofile" default="true" />
<setting id="videoscreen.cmswhitepoint" default="true">0</setting>
<setting id="videoscreen.cmsprimaries" default="true">0</setting>
<setting id="videoscreen.cmsgammamode" default="true">0</setting>
<setting id="videoscreen.cmsgamma" default="true">220</setting>
<setting id="videoscreen.cmslutsize" default="true">6</setting>
<setting id="videoscreen.limitgui" default="true">0</setting>
<setting id="videoscreen.whitelist" default="true" />
<setting id="videoscreen.whitelistpulldown" default="true">false</setting>
<setting id="videoscreen.whitelistdoublerefreshrate" default="true">false</setting>
<setting id="videoscreen.stereoscopicmode" default="true">0</setting>
<setting id="videoscreen.preferedstereoscopicmode" default="true">100</setting>
<setting id="videoscreen.noofbuffers" default="true">3</setting>
<setting id="audiooutput.audiodevice">AUDIOTRACK:AudioTrack (IEC)</setting>
<setting id="audiooutput.channels" default="true">1</setting>
<setting id="audiooutput.config" default="true">2</setting>
<setting id="audiooutput.volumesteps" default="true">90</setting>
<setting id="audiooutput.maintainoriginalvolume" default="true">true</setting>
<setting id="audiooutput.stereoupmix" default="true">false</setting>
<setting id="audiooutput.processquality" default="true">30</setting>
<setting id="audiooutput.atempothreshold" default="true">2</setting>
<setting id="audiooutput.samplerate" default="true">48000</setting>
<setting id="audiooutput.streamsilence" default="true">1</setting>
<setting id="audiooutput.streamnoise" default="true">true</setting>
<setting id="audiooutput.guisoundmode" default="true">1</setting>
<setting id="audiooutput.guisoundvolume" default="true">100</setting>
<setting id="lookandfeel.soundskin" default="true">resource.uisounds.kodi</setting>
<setting id="audiooutput.passthrough" default="true">false</setting>
<setting id="audiooutput.passthroughdevice">AUDIOTRACK:AudioTrack (IEC)</setting>
<setting id="audiooutput.ac3passthrough" default="true">true</setting>
<setting id="audiooutput.ac3transcode" default="true">false</setting>
<setting id="audiooutput.eac3passthrough" default="true">false</setting>
<setting id="audiooutput.dtspassthrough" default="true">false</setting>
<setting id="audiooutput.truehdpassthrough" default="true">false</setting>
<setting id="audiooutput.dtshdpassthrough" default="true">false</setting>
<setting id="audiooutput.dtshdcorefallback" default="true">true</setting>
<setting id="input.enablemouse" default="true">true</setting>
<setting id="input.enablejoystick" default="true">true</setting>
<setting id="input.asknewcontrollers" default="true">true</setting>
<setting id="input.rumblenotify" default="true">false</setting>
<setting id="input.controllerpoweroff" default="true">false</setting>
<setting id="network.usehttpproxy" default="true">false</setting>
<setting id="network.httpproxytype" default="true">0</setting>
<setting id="network.httpproxyserver" default="true" />
<setting id="network.httpproxyport" default="true">8080</setting>
<setting id="network.httpproxyusername" default="true" />
<setting id="network.httpproxypassword" default="true" />
<setting id="network.bandwidth" default="true">0</setting>
<setting id="powermanagement.displaysoff" default="true">0</setting>
<setting id="powermanagement.shutdowntime" default="true">0</setting>
<setting id="powermanagement.shutdownstate" default="true">0</setting>
<setting id="powermanagement.waitfornetwork" default="true">0</setting>
<setting id="powermanagement.wakeonaccess" default="true">false</setting>
<setting id="general.addonupdates" default="true">0</setting>
<setting id="general.addonnotifications" default="true">false</setting>
<setting id="addons.unknownsources" default="true">false</setting>
<setting id="addons.updatemode" default="true">0</setting>
<setting id="debug.showloginfo" default="true">false</setting>
<setting id="debug.extralogging" default="true">false</setting>
<setting id="debug.setextraloglevel" default="true" />
<setting id="debug.screenshotpath" default="true" />
<setting id="eventlog.enabled" default="true">true</setting>
<setting id="eventlog.enablednotifications" default="true">false</setting>
<setting id="cache.harddisk" default="true">256</setting>
<setting id="cachevideo.dvdrom" default="true">2048</setting>
<setting id="cachevideo.lan" default="true">2048</setting>
<setting id="cachevideo.internet" default="true">4096</setting>
<setting id="cacheaudio.dvdrom" default="true">256</setting>
<setting id="cacheaudio.lan" default="true">256</setting>
<setting id="cacheaudio.internet" default="true">256</setting>
<setting id="cachedvd.dvdrom" default="true">2048</setting>
<setting id="cachedvd.lan" default="true">2048</setting>
<setting id="cacheunknown.internet" default="true">4096</setting>
<setting id="system.playlistspath">special://profile/playlists/</setting>
<setting id="general.addonforeignfilter" default="true">false</setting>
<setting id="general.addonbrokenfilter" default="true">true</setting>
<viewstates>
<games>
<viewmode>720896</viewmode>
<sortmethod>1</sortmethod>
<sortorder>1</sortorder>
<sortattributes>0</sortattributes>
</games>
<musicfiles>
<viewmode>720896</viewmode>
<sortmethod>1</sortmethod>
<sortorder>1</sortorder>
<sortattributes>0</sortattributes>
</musicfiles>
<musiclastfm>
<viewmode>65536</viewmode>
<sortmethod>1</sortmethod>
<sortorder>1</sortorder>
<sortattributes>0</sortattributes>
</musiclastfm>
<musicnavalbums>
<viewmode>65536</viewmode>
<sortmethod>1</sortmethod>
<sortorder>1</sortorder>
<sortattributes>0</sortattributes>
</musicnavalbums>
<musicnavartists>
<viewmode>65536</viewmode>
<sortmethod>1</sortmethod>
<sortorder>1</sortorder>
<sortattributes>0</sortattributes>
</musicnavartists>
<musicnavsongs>
<viewmode>65536</viewmode>
<sortmethod>8</sortmethod>
<sortorder>1</sortorder>
<sortattributes>0</sortattributes>
</musicnavsongs>
<pictures>
<viewmode>720896</viewmode>
<sortmethod>1</sortmethod>
<sortorder>1</sortorder>
<sortattributes>0</sortattributes>
</pictures>
<programs>
<viewmode>720896</viewmode>
<sortmethod>1</sortmethod>
<sortorder>1</sortorder>
<sortattributes>0</sortattributes>
</programs>
<videofiles>
<viewmode>720896</viewmode>
<sortmethod>1</sortmethod>
<sortorder>1</sortorder>
<sortattributes>0</sortattributes>
</videofiles>
<videonavactors>
<viewmode>65536</viewmode>
<sortmethod>1</sortmethod>
<sortorder>1</sortorder>
<sortattributes>0</sortattributes>
</videonavactors>
<videonavepisodes>
<viewmode>720896</viewmode>
<sortmethod>23</sortmethod>
<sortorder>1</sortorder>
<sortattributes>0</sortattributes>
</videonavepisodes>
<videonavgenres>
<viewmode>65536</viewmode>
<sortmethod>1</sortmethod>
<sortorder>1</sortorder>
<sortattributes>0</sortattributes>
</videonavgenres>
<videonavmusicvideos>
<viewmode>65536</viewmode>
<sortmethod>1</sortmethod>
<sortorder>1</sortorder>
<sortattributes>0</sortattributes>
</videonavmusicvideos>
<videonavseasons>
<viewmode>65536</viewmode>
<sortmethod>1</sortmethod>
<sortorder>1</sortorder>
<sortattributes>0</sortattributes>
</videonavseasons>
<videonavtitles>
<viewmode>65536</viewmode>
<sortmethod>1</sortmethod>
<sortorder>1</sortorder>
<sortattributes>0</sortattributes>
</videonavtitles>
<videonavtvshows>
<viewmode>65536</viewmode>
<sortmethod>1</sortmethod>
<sortorder>1</sortorder>
<sortattributes>0</sortattributes>
</videonavtvshows>
<videonavyears>
<viewmode>65536</viewmode>
<sortmethod>1</sortmethod>
<sortorder>1</sortorder>
<sortattributes>0</sortattributes>
</videonavyears>
</viewstates>
<general>
<settinglevel>1</settinglevel>
<eventlog>
<level>0</level>
<showhigherlevels>true</showhigherlevels>
</eventlog>
<systemtotaluptime>1</systemtotaluptime>
</general>
<resolutions />
<defaultvideosettings>
<interlacemethod>1</interlacemethod>
<scalingmethod>1</scalingmethod>
<noisereduction>0.000000</noisereduction>
<postprocess>false</postprocess>
<sharpness>0.000000</sharpness>
<viewmode>0</viewmode>
<zoomamount>1.000000</zoomamount>
<pixelratio>1.000000</pixelratio>
<verticalshift>0.000000</verticalshift>
<volumeamplification>0.000000</volumeamplification>
<showsubtitles>true</showsubtitles>
<brightness>50.000000</brightness>
<contrast>50.000000</contrast>
<gamma>20.000000</gamma>
<audiodelay>0.000000</audiodelay>
<subtitledelay>0.000000</subtitledelay>
<nonlinstretch>false</nonlinstretch>
<stereomode>0</stereomode>
<centermixlevel>0</centermixlevel>
<tonemapmethod>1</tonemapmethod>
<tonemapparam>1.000000</tonemapparam>
</defaultvideosettings>
<defaultaudiosettings />
<defaultgamesettings>
<videofilter></videofilter>
<stretchmode>normal</stretchmode>
<rotation>0</rotation>
</defaultgamesettings>
<mymusic>
<playlist>
<repeat>false</repeat>
<shuffle>false</shuffle>
</playlist>
<needsupdate>0</needsupdate>
</mymusic>
<myvideos>
<watchmodemovies>0</watchmodemovies>
<watchmodetvshows>0</watchmodetvshows>
<watchmodemusicvideos>0</watchmodemusicvideos>
<watchmoderecordings>0</watchmoderecordings>
<playlist>
<repeat>false</repeat>
<shuffle>false</shuffle>
</playlist>
<needsupdate>0</needsupdate>
</myvideos>
<audio>
<mute>false</mute>
<fvolumelevel>1.000000</fvolumelevel>
</audio>
</settings>

BIN
kodi/kodi.apk Normal file

Binary file not shown.

View File

@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
# wget -O box.sh https://github.com/wukongdaily/tvhelper-docker/raw/master/shells/box.sh && chmod +x box.sh && ./box.sh # wget -O box.sh https://gitee.com/wukongdaily/tvhelper-docker/raw/master/shells/box.sh && chmod +x box.sh && ./box.sh
#******************************************************** #********************************************************
source common.sh source common.sh
apk_path="/tvhelper/apks/" apk_path="/tvhelper/apks/"

View File

@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
# wget -O kodi.sh https://github.com/wukongdaily/tvhelper-docker/raw/master/shells/kodi.sh && chmod +x kodi.sh && ./kodi.sh # wget -O kodi.sh https://gitee.com/wukongdaily/tvhelper-docker/raw/master/shells/kodi.sh && chmod +x kodi.sh && ./kodi.sh
#******************************************************** #********************************************************
source common.sh source common.sh
@ -147,41 +147,39 @@ set_kodi_to_chinese() {
echo -e "${GREEN}解压中文语言包到本地临时目录...${NC}" echo -e "${GREEN}解压中文语言包到本地临时目录...${NC}"
unzip -o /tvhelper/kodi/resource.language.zh_cn-10.0.64.zip -d "$TEMP_DIR" unzip -o /tvhelper/kodi/resource.language.zh_cn-10.0.64.zip -d "$TEMP_DIR"
# 推送整个解压后的文件夹到Kodi的Add-ons目录 # 1、推送整个解压后的文件夹到Kodi的Add-ons目录
adb push "$TEMP_DIR" "$KODI_ADDONS_PATH" adb push "$TEMP_DIR" "$KODI_ADDONS_PATH"
echo -e "${RED}清理临时文件...${NC}"
rm -rf "$TEMP_DIR"
echo -e "${GREEN}中文语言包已安装至KODI,开始配置语言....${NC}" echo -e "${GREEN}中文语言包已安装至KODI,开始配置语言....${NC}"
# 修改guisettings.xml以使用中文语言包 # 修改guisettings.xml以使用中文语言包
local KODI_SETTINGS_PATH="/sdcard/Android/data/org.xbmc.kodi/files/.kodi/userdata/guisettings.xml" local KODI_SETTINGS_PATH="/sdcard/Android/data/org.xbmc.kodi/files/.kodi/userdata/guisettings.xml"
# 先下载配置文件
adb pull $KODI_SETTINGS_PATH /tmp/guisettings.xml
# 使用sed命令更新XML文件中的字体和语言设置
sed -i 's|<setting id="lookandfeel.font"[^>]*>.*</setting>|<setting id="lookandfeel.font">Arial</setting>|g' /tmp/guisettings.xml
sed -i 's|<setting id="locale.language"[^>]*>.*</setting>|<setting id="locale.language">resource.language.zh_cn</setting>|g' /tmp/guisettings.xml
# 再上传配置文件——更新
adb push /tmp/guisettings.xml $KODI_SETTINGS_PATH
# 2、上传配置文件——更新
adb push /tvhelper/kodi/guisettings.xml $KODI_SETTINGS_PATH
echo -e "${GREEN}Kodi的字体和语言设置已更新,正在为您尝试打开KODI,请根据提示完成KODI初始化。${NC}"
sleep 2
# 重启Kodi # 重启Kodi
adb shell am start -a android.intent.action.MAIN -n org.xbmc.kodi/.Main #adb shell am start -a android.intent.action.MAIN -n org.xbmc.kodi/.Main
echo -e "${GREEN}Kodi的字体和语言设置已更新。${NC}" adb shell monkey -p org.xbmc.kodi 1 >/dev/null 2>&1
} }
# 安装apk # 安装apk
install_apk() { install_apk() {
local apk_download_url=$1 local apk_local_path=$1
local package_name=$2 local package_name=$2
local filename=$(basename "$apk_download_url") local filename=$(basename "$apk_local_path")
# 下载APK文件到临时目录
wget -O /tmp/$filename "$apk_download_url" # 检查APK文件是否存在
if [ ! -f "$apk_local_path" ]; then
echo -e "${RED}错误: APK文件不存在,请更新docker镜像后重试。${NC}"
return 1
fi
if check_adb_connected; then if check_adb_connected; then
# 卸载旧版本的APK如果存在 # 卸载旧版本的APK如果存在
adb uninstall "$package_name" >/dev/null 2>&1
echo -e "${GREEN}正在推送和安装${filename},请耐心等待...${NC}" echo -e "${GREEN}正在推送和安装${filename},请耐心等待...${NC}"
adb uninstall "$package_name" >/dev/null 2>&1
# 模拟安装进度 # 模拟安装进度
echo -ne "${BLUE}" echo -ne "${BLUE}"
@ -192,7 +190,7 @@ install_apk() {
# 保存进度指示进程的PID # 保存进度指示进程的PID
PROGRESS_PID=$! PROGRESS_PID=$!
install_result=$(adb install -r /tmp/$filename 2>&1) install_result=$(adb install -r $apk_local_path 2>&1)
# 安装完成后,终止进度指示进程 # 安装完成后,终止进度指示进程
kill $PROGRESS_PID kill $PROGRESS_PID
@ -202,11 +200,10 @@ install_apk() {
# 检查安装结果 # 检查安装结果
if [[ $install_result == *"Success"* ]]; then if [[ $install_result == *"Success"* ]]; then
echo -e "${GREEN}APK安装成功!请在盒子上查看${NC}" echo -e "${GREEN}APK安装成功!请在盒子上查看${NC}"
set_kodi_to_chinese
else else
echo -e "${RED}APK安装失败:$install_result${NC}" echo -e "${RED}APK安装失败:$install_result${NC}"
fi fi
rm -rf /tmp/"$filename"
echo -e "${YELLOW}临时文件/tmp/${filename}已清理${NC}"
else else
connect_adb connect_adb
fi fi
@ -214,22 +211,22 @@ install_apk() {
# 安装KODI # 安装KODI
install_kodi() { install_kodi() {
install_apk "https://mirror.karneval.cz/pub/xbmc/releases/android/arm/kodi-20.4-Nexus-armeabi-v7a.apk" "org.xbmc.kodi" install_apk "/tvhelper/kodi/kodi.apk" "org.xbmc.kodi"
} }
# 菜单 # 菜单
menu_options=( menu_options=(
"连接ADB" "连接ADB"
"断开ADB" "断开ADB"
"安装KODI 20.4" "安装KODI 20.5 并设置中文"
"设置KODI的语言为简体中文" #"设置KODI的语言为简体中文"
"赞助|打赏" "赞助|打赏"
) )
commands=( commands=(
["连接ADB"]="connect_adb" ["连接ADB"]="connect_adb"
["断开ADB"]="disconnect_adb" ["断开ADB"]="disconnect_adb"
["安装KODI 20.4"]="install_kodi" ["安装KODI 20.5 并设置中文"]="install_kodi"
["设置KODI的语言为简体中文"]="set_kodi_to_chinese" ["设置KODI的语言为简体中文"]="set_kodi_to_chinese"
["赞助|打赏"]="sponsor" ["赞助|打赏"]="sponsor"
) )

View File

@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
# wget -O sony.sh https://github.com/wukongdaily/tvhelper-docker/raw/master/shells/sony.sh && chmod +x sony.sh && ./sony.sh # wget -O sony.sh https://gitee.com/wukongdaily/tvhelper-docker/raw/master/shells/sony.sh && chmod +x sony.sh && ./sony.sh
#******************************************************** #********************************************************
source common.sh source common.sh
# 定义红色文本 # 定义红色文本

View File

@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
# wget -O tv.sh https://github.com/wukongdaily/tvhelper-docker/raw/master/shells/tv.sh && chmod +x tv.sh && ./tv.sh # wget -O tv.sh https://gitee.com/wukongdaily/tvhelper-docker/raw/master/shells/tv.sh && chmod +x tv.sh && ./tv.sh
source common.sh source common.sh
apk_path="/tvhelper/apks/" apk_path="/tvhelper/apks/"
# 定义红色文本 # 定义红色文本
@ -13,6 +13,30 @@ BLUE="\e[96m"
# 菜单选项数组 # 菜单选项数组
declare -a menu_options declare -a menu_options
declare -A commands declare -A commands
# 安装原生tv必备菜单
declare -a item_options
declare -A commands_essentials
# 替换或恢复系统桌面
declare -a tv_model_options
declare -A tv_model_commands
get_docker_version() {
# 尝试从 /etc/environment 读取 APP_VERSION
if [ -f /etc/environment ]; then
source /etc/environment
fi
if [ -n "$APP_VERSION" ]; then
version=$APP_VERSION
else
# 若 /etc/environment 中的 APP_VERSION 为空,使用默认值
version="1.0.2"
fi
echo $version
}
# 使用get_docker_version函数
docker_version=$(get_docker_version)
show_user_tips() { show_user_tips() {
read -p "按 Enter 键继续..." read -p "按 Enter 键继续..."
@ -64,7 +88,7 @@ connect_adb() {
last_name=$(head -n 1 "$history_file") last_name=$(head -n 1 "$history_file")
# 检查历史中的IP地址是否合法 # 检查历史中的IP地址是否合法
if is_valid_ip "$last_ip"; then if is_valid_ip "$last_ip"; then
echo -e "${YELLOW}上次连接的设备是 ${last_name},IP地址为 ${last_ip}\n您是否要再次连接到此设备?确认请回车,否定输入n再回车[Y/n]${NC}" echo -e "上次连接的设备是 ${GREEN}${last_name}${NC}IP地址为 ${GREEN}${last_ip}${NC}\n您是否要再次连接到此设备?确认请直接回车,否定输入n再回车[Y/n]"
read answer read answer
if [[ "$answer" == "N" || "$answer" == "n" ]]; then if [[ "$answer" == "N" || "$answer" == "n" ]]; then
echo -e "${YELLOW}请手动输入电视盒子的完整IP地址:${NC}" echo -e "${YELLOW}请手动输入电视盒子的完整IP地址:${NC}"
@ -673,58 +697,7 @@ enter_sonytv() {
wget -O sony.sh https://gitee.com/wukongdaily/tvhelper-docker/raw/master/shells/sony.sh && chmod +x sony.sh && ./sony.sh wget -O sony.sh https://gitee.com/wukongdaily/tvhelper-docker/raw/master/shells/sony.sh && chmod +x sony.sh && ./sony.sh
} }
# 更新脚本
# 菜单
menu_options=(
"连接ADB"
"断开ADB"
"一键修改电视盒子NTP服务器地址(需重启)"
"向TV端输入文字(限英文)"
"为Google TV系统安装Play商店图标"
"显示Netflix影片码率"
"模拟菜单键"
"安装电视订阅助手"
"安装Emotn Store应用商店"
"安装当贝市场"
"安装文件管理器+"
"安装Downloader"
"安装my-tv(lizongying)"
"安装BBLL(xiaye13579)"
"自定义批量安装data目录下的所有apk"
#"安装Mix-Apps用于显示全部应用"
"进入KODI助手"
#"安装Fire TV版Youtube(免谷歌框架)"
"进入TVBox安装助手"
"进入Sony电视助手"
"更新脚本"
"赞助|打赏"
)
commands=(
["连接ADB"]="connect_adb"
["断开ADB"]="disconnect_adb"
["一键修改电视盒子NTP服务器地址(需重启)"]="modify_ntp"
["安装电视订阅助手"]="install_subhelper_apk"
["安装Emotn Store应用商店"]="install_emotn_store"
["安装当贝市场"]="install_dbmarket"
["向TV端输入文字(限英文)"]="input_text"
["显示Netflix影片码率"]="show_nf_info"
["模拟菜单键"]="show_menu_keycode"
["为Google TV系统安装Play商店图标"]="show_playstore_icon"
["安装my-tv(lizongying)"]="install_mytv_latest_apk"
["安装BBLL(xiaye13579)"]="install_BBLL_latest_apk"
["安装文件管理器+"]="install_file_manager_plus"
["安装Downloader"]="install_downloader"
["自定义批量安装data目录下的所有apk"]="install_all_apks"
["安装Mix-Apps用于显示全部应用"]="install_mixapps"
["进入KODI助手"]="kodi_helper"
["安装Fire TV版Youtube(免谷歌框架)"]="install_youtube_firetv"
["进入TVBox安装助手"]="enter_tvbox_helper"
["赞助|打赏"]="sponsor"
["进入Sony电视助手"]="enter_sonytv"
["更新脚本"]="update_sh"
)
update_sh() { update_sh() {
break break
echo "正在更新脚本..." echo "正在更新脚本..."
@ -742,6 +715,286 @@ update_sh() {
fi fi
} }
# 菜单
menu_options=(
"连接ADB"
"断开ADB"
"安装Android原生TV必备精选Apps"
"一键修改NTP(限原生TV,需重启)"
"安装Play商店图标(仅google tv使用)"
"自定义批量安装data目录下的所有apk"
"替换系统桌面"
"进入KODI助手"
"进入TVBox安装助手"
"进入Sony电视助手"
"向TV端输入文字(限英文)"
"显示Netflix影片码率"
"模拟菜单键"
"更新脚本"
"赞助|打赏"
)
commands=(
["连接ADB"]="connect_adb"
["断开ADB"]="disconnect_adb"
["安装Android原生TV必备精选Apps"]="android_tv_essentials"
["一键修改NTP(限原生TV,需重启)"]="modify_ntp"
["向TV端输入文字(限英文)"]="input_text"
["显示Netflix影片码率"]="show_nf_info"
["模拟菜单键"]="show_menu_keycode"
["安装Play商店图标(仅google tv使用)"]="show_playstore_icon"
["自定义批量安装data目录下的所有apk"]="install_all_apks"
["进入KODI助手"]="kodi_helper"
["进入TVBox安装助手"]="enter_tvbox_helper"
["进入Sony电视助手"]="enter_sonytv"
["更新脚本"]="update_sh"
["赞助|打赏"]="sponsor"
["替换系统桌面"]="replace_system_ui_menu"
)
# 安装原生tv必备apps
item_options=(
"安装电视订阅助手"
"安装Emotn Store应用商店"
"安装当贝市场"
"安装my-tv(lizongying)"
"安装BBLL(xiaye13579)"
"安装文件管理器+"
"安装Downloader"
"安装Mix-Apps用于显示全部应用"
"返回主菜单"
)
commands_essentials=(
["安装电视订阅助手"]="install_subhelper_apk"
["安装Emotn Store应用商店"]="install_emotn_store"
["安装当贝市场"]="install_dbmarket"
["安装my-tv(lizongying)"]="install_mytv_latest_apk"
["安装BBLL(xiaye13579)"]="install_BBLL_latest_apk"
["安装文件管理器+"]="install_file_manager_plus"
["安装Downloader"]="install_downloader"
["安装Mix-Apps用于显示全部应用"]="install_mixapps"
)
# 替换或恢复系统桌面
tv_model_options=(
"替换/恢复 索尼Sony电视系统桌面"
"替换/恢复 小米(盒子/电视)系统桌面"
"替换/恢复 小米盒子国际版系统桌面"
"替换/恢复 GoogleTV系统桌面"
"替换/恢复 安卓原生TV系统桌面(原生类型TV通用)"
"返回主菜单"
)
tv_model_commands=(
["替换/恢复 索尼Sony电视系统桌面"]="replace_sony_ui"
["替换/恢复 小米(盒子/电视)系统桌面"]="replace_xiaomi_ui"
["替换/恢复 小米盒子国际版系统桌面"]="replace_xiaomi_global_ui"
["替换/恢复 GoogleTV系统桌面"]="toggle_googletv_system_ui"
["替换/恢复 安卓原生TV系统桌面(原生类型TV通用)"]="replace_normal_androidtv_ui"
)
# 定义安卓原生TV必备子菜单函数
android_tv_essentials() {
while true; do
echo -e "${GREEN}原生TV必备精选Apps:${NC}"
for i in "${!item_options[@]}"; do
echo " ($((i + 1))) ${item_options[$i]}"
done
echo "请选择一个选项,或按q返回主菜单:"
read -r choice
# 检查输入是否为退出命令
if [[ "$choice" == "q" ]]; then
break
fi
# 检查输入是否为数字
if ! [[ $choice =~ ^[0-9]+$ ]]; then
echo -e " ${RED}请输入有效数字!${NC}"
continue
fi
# 检查数字是否在有效范围内
if [[ $choice -lt 1 ]] || [[ $choice -gt ${#item_options[@]} ]]; then
echo -e " ${RED}选项超出范围!${NC}"
echo -e " ${YELLOW}请输入 1 到 ${#item_options[@]} 之间的数字。${NC}"
continue
fi
# 处理返回主菜单
if [[ $choice -eq ${#item_options[@]} ]]; then
break
fi
local selected_option="${item_options[$((choice - 1))]}"
command_item_run="${commands_essentials["$selected_option"]}"
# 检查是否存在对应的命令并执行
if [ -z "$command_item_run" ]; then
echo -e " ${RED}无效选项,请重新选择。${NC}"
else
eval "$command_item_run"
fi
done
}
# 根据品牌替换系统桌面
replace_system_ui_menu() {
local apk_path="/tvhelper/apks/ui.apk"
# 检查APK文件是否存在
if [ ! -f "$apk_path" ]; then
echo -e "${RED}错误: 要替换的桌面APK文件不存在,请更新docker镜像后重试。${NC}"
return 1
fi
while true; do
echo -e "${GREEN}目前支持替换桌面的电视盒子或电视品牌如下:${NC}"
for i in "${!tv_model_options[@]}"; do
echo " ($((i + 1))) ${tv_model_options[$i]}"
done
echo "请选择一个选项,或按q返回主菜单:"
read -r choice
# 检查输入是否为退出命令
if [[ "$choice" == "q" ]]; then
break
fi
# 检查输入是否为数字
if ! [[ $choice =~ ^[0-9]+$ ]]; then
echo -e " ${RED}请输入有效数字!${NC}"
continue
fi
# 检查数字是否在有效范围内
if [[ $choice -lt 1 ]] || [[ $choice -gt ${#tv_model_options[@]} ]]; then
echo -e " ${RED}选项超出范围!${NC}"
echo -e " ${YELLOW}请输入 1 到 ${#tv_model_options[@]} 之间的数字。${NC}"
continue
fi
# 处理返回主菜单
if [[ $choice -eq ${#tv_model_options[@]} ]]; then
break
fi
local selected_option="${tv_model_options[$((choice - 1))]}"
local command_item_run="${tv_model_commands["$selected_option"]}"
# 检查是否存在对应的命令并执行
if [ -z "$command_item_run" ]; then
echo -e " ${RED}无效选项,请重新选择。${NC}"
else
eval "$command_item_run"
fi
done
}
replace_xiaomi_ui() {
local system_ui_package="com.mitv.tvhome"
toggle_system_ui "${system_ui_package}"
}
replace_xiaomi_global_ui() {
local system_ui_package="com.google.android.tvlauncher"
toggle_system_ui "${system_ui_package}"
}
replace_sony_ui() {
local system_ui_package="com.dangbei.TVHomeLauncher"
toggle_system_ui "${system_ui_package}"
}
replace_xiaomi_global_ui() {
replace_normal_androidtv_ui
}
replace_normal_androidtv_ui() {
local system_ui_package="com.google.android.tvlauncher"
toggle_system_ui "${system_ui_package}"
}
check_emotnui_installed(){
local package_name="com.oversea.aslauncher"
local apk_path="/tvhelper/apks/ui.apk"
# 检查APK文件是否存在
if [ ! -f "$apk_path" ]; then
echo -e "${RED}错误: APK文件不存在,请更新docker镜像后重试,确保docker镜像版本 >= 1.0.3${NC}"
return 1
fi
# 检查 com.oversea.aslauncher 是否已安装
if ! adb shell pm list packages | grep -q "$package_name"; then
echo -e "${GREEN}EmotnUI 未安装,开始安装...请稍后${NC}"
# 安装 com.oversea.aslauncher 应用
if adb install -r "$apk_path" >/dev/null 2>&1; then
echo -e "${GREEN}第三方桌面安装成功${NC}"
else
echo -e "${RED}应用安装失败,请检查APK文件路径和设备连接状态。若apk不存在请更新docker镜像。${NC}"
return
fi
else
echo -e "${GREEN}第三方桌面EmotnUI已安装。${NC}"
fi
}
toggle_googletv_system_ui() {
local system_ui_package="com.google.android.apps.tv.launcherx"
local system_setup_package="com.google.android.tungsten.setupwraith"
#判断emotnui是否安装
check_emotnui_installed
# 检查系统桌面是否已被禁用
if adb shell pm list packages -d | grep -q "$system_ui_package"; then
# 若已被禁用,则启用系统桌面
if adb shell pm enable "$system_ui_package" >/dev/null 2>&1 && adb shell pm enable "$system_setup_package" >/dev/null 2>&1; then
echo -e "${GREEN}恭喜您,您的系统桌面又回来啦! 请按HOME键确认。${NC}"
adb shell input keyevent KEYCODE_HOME
else
echo -e "${RED}启用系统桌面或其他应用失败,请检查设备连接状态和权限。${NC}"
fi
else
# 若未被禁用,则禁用系统桌面
if adb shell pm disable-user --user 0 "$system_ui_package" >/dev/null 2>&1 &&
adb shell pm disable-user --user 0 "$system_setup_package" >/dev/null 2>&1; then
echo -e "${GREEN}恭喜您,新桌面替换成功。点击HOME键 查看新桌面哦。${NC}"
adb shell input keyevent KEYCODE_HOME
else
echo -e "${RED}禁用系统桌面失败,请检查设备连接状态和权限。${NC}"
fi
fi
}
# 替换或恢复系统桌面
toggle_system_ui() {
local system_ui_package=$1
#判断emotnui是否安装
check_emotnui_installed
# 检查系统桌面是否已被禁用
if adb shell pm list packages -d | grep -q "$system_ui_package"; then
# 若已被禁用,则启用系统桌面
if adb shell pm enable "$system_ui_package" >/dev/null 2>&1; then
echo -e "${GREEN}恭喜您,您的系统桌面又回来啦! 请按HOME键确认。${NC}"
adb shell input keyevent KEYCODE_HOME
else
echo -e "${RED}启用系统桌面失败,请检查设备连接状态和权限。${NC}"
fi
else
# 若未被禁用,则禁用系统桌面
if adb shell pm disable-user --user 0 "$system_ui_package" >/dev/null 2>&1; then
echo -e "${GREEN}恭喜您,新桌面替换成功。点击HOME键 查看新桌面哦。${NC}"
adb shell input keyevent KEYCODE_HOME
else
echo -e "${RED}禁用系统桌面失败,请检查设备连接状态和权限。${NC}"
fi
fi
}
# 处理菜单 # 处理菜单
handle_choice() { handle_choice() {
local choice=$1 local choice=$1
@ -781,7 +1034,7 @@ show_menu() {
mkdir -p /tvhelper/shells/data mkdir -p /tvhelper/shells/data
clear clear
echo "***********************************************************************" echo "***********************************************************************"
echo -e "* ${YELLOW}盒子助手Docker版 (v1.0.0)${NC} " echo -e "* ${YELLOW}盒子助手Docker版 (v${docker_version})${NC} "
echo -e "* ${GREEN}base Alpine Linux${NC} " echo -e "* ${GREEN}base Alpine Linux${NC} "
echo -e "* ${RED}请确保电视盒子和Docker宿主机处于${NC}${BLUE}同一网段${NC}\n* ${RED}且电视盒子开启了${NC}${BLUE}USB调试模式(adb开关)${NC} " echo -e "* ${RED}请确保电视盒子和Docker宿主机处于${NC}${BLUE}同一网段${NC}\n* ${RED}且电视盒子开启了${NC}${BLUE}USB调试模式(adb开关)${NC} "
echo "**********************************************************************" echo "**********************************************************************"