diff --git a/LICENSE b/LICENSE index ce083a0..a65bd6a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,28 @@ -MIT License +Copyright (c) 2023 Matheus Garcia. All rights reserved. -Copyright (c) 2020 Tales A. Mendonça +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +3. Neither the name of the author nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. diff --git a/Main.java b/Main.java new file mode 100644 index 0000000..97c4b69 --- /dev/null +++ b/Main.java @@ -0,0 +1,266 @@ +/* + * Feito por Matheus Garcia. + * Tradução do Shell script OTT para Java. + * Trabalho original feito por Tales A. Mendonça. + */ + +/* + * Copyright (c) 2023 Matheus Garcia. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. Neither the name of the author nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ + +package OTT; + +import java.io.DataInputStream; +import java.io.FileOutputStream; +import java.io.FileInputStream; +import java.io.File; +import java.net.URL; +import java.net.URI; +import java.util.Scanner; +import java.util.Arrays; +import java.lang.reflect.Array; +import OTT.Methods; + +public class Main extends Object +{ + /* Cores degrade */ + public static final String RED001 = "\033[38;5;1m", /* Vermelho 1 */ + RED009 = "\033[38;5;9m", /* Vermelho 9 */ + CYA122 = "\033[38;5;122m", /* Ciano 122 */ + CYA044 = "\033[38;5;44m", /* Ciano 44 */ + PUR063 = "\033[38;5;63m", /* Roxo 63 */ + PUR027 = "\033[38;5;27m", /* Roxo 27 */ + GRE046 = "\033[38;5;46m", /* Verde 46 */ + GRY247 = "\033[38;5;247m", /* Cinza 247 */ + ORA208 = "\033[38;5;208m", /* Laranja 208 */ + ORA214 = "\033[38;5;214m", /* Laranja 214 */ + YEL226 = "\033[38;5;226m", /* Amarelo 226 */ + BLU039 = "\033[38;5;44m", /* Azul 39 */ + BRW094 = "\033[38;5;94m", /* Marrom 94 */ + BRW136 = "\033[38;5;136m", /* Marrom 136 */ + + /* Cores chapadas */ + GRY = "\033[30;1m", /* Cinza */ + RED = "\033[31;1m", /* Vermelho */ + GRE = "\033[32;1m", /* Verde */ + YEL = "\033[33;1m", /* Amarelo */ + BLU = "\033[34;1m", /* Azul */ + PIN = "\033[35;1m", /* Rosa */ + CYA = "\033[36;1m", /* Ciano */ + BOL = "\033[37;1m", /* Negrito */ + WAR = "\033[40;31;5m", /* Vermelho piscando; aviso! */ + STD = "\033[m", /* Fechamento de cor */ + CLR = "\033[2J\033[H", + + path[] = { "/data/data/com.termux/files", System.getenv("HOME"), "/usr" }, + classpath = "OTT.jar", + cwd = System.getProperty("user.dir"); + public static boolean isAndroid; + + public static void main(String[] args) + { + System.out.print(CLR); + + if(((isAndroid = ((path[0] + "/home").compareTo(cwd)) == 0) || path[1].compareTo(cwd) == 0) && + classpath.compareTo(System.getProperty("java.class.path")) == 0) + { + Main ott = new Main(); + + ott.version(); + ott.init(); + System.exit(0); + } + + System.err.println("Você deve rodar este aplicativo a partir do diretório HOME."); + System.exit(-1); + } + + public void version() + { + try + { + String preurl = "https://github.com/Krush206/optimize_android_tv/raw/java"; + URL url = new URI(isAndroid ? preurl + "/OTT_Android.jar" : preurl + "/OTT_Linux.jar").toURL(); + DataInputStream fin = new DataInputStream(new FileInputStream(classpath)), + appin = new DataInputStream(url.openStream()); + Object localapp = Array.newInstance(byte.class, fin.available()), + app = Array.newInstance(byte.class, url.openConnection().getContentLength()); + int i; + + appin.readFully((byte[]) app); + appin.close(); + fin.readFully((byte[]) localapp); + fin.close(); + if(!Arrays.equals((byte[]) app, (byte[]) localapp)) + { + FileOutputStream fout = new FileOutputStream(classpath); + + System.out.println(BLU + "* " + BOL + "Nova versão encontrada!\n" + + BLU + "* " + STD + "Atualizando. Aguarde!"); + fout.write((byte[]) app); + fout.close(); + System.out.println(GRE + "* " + BOL + "Atualizado com sucesso!\n\n" + STD + + "Reinicie o aplicativo."); + System.exit(0); + } + } + catch(Exception e) + { + e.printStackTrace(); + System.exit(-1); + } + } + + public void init() + { + Methods ott = new Methods(); + String ip; + + System.out.println(BOL + "Bem-vindo(a) ao OTT (Otimização TV TCL)!\n\n" + + "Modelos compatíveis:\n" + + PIN + "Chassi T221T01 = " + CYA + "S615" + STD + ".\n" + + PIN + "Chassi R51AT01 = " + CYA + "P635" + STD + ".\n" + + PIN + "Chassi RT41 = " + CYA + "ES560" + + STD + ", " + CYA + "S6500" + STD + ", " + CYA + "S5300" + STD + ".\n" + + PIN + "Chassi RT51 = " + CYA + "A6" + + STD + ", " + CYA + "A8" + STD + ", " + CYA + "A10" + + STD + ", " + CYA + "C715" + STD + ", " + CYA + "C716" + + STD + ", " + CYA + "C717" + STD + ", " + CYA + "C815" + + STD + ", " + CYA + "EP640" + STD + ", " + CYA + "EP645" + + STD + ", " + CYA + "EP645" + STD + ", " + CYA + "EP660" + + STD + ", " + CYA + "EP685" + STD + ", " + CYA + "EP785" + + STD + ", " + CYA + "K61" + STD + ", " + CYA + "P615" + + STD + ", " + CYA + "P715" + STD + ", " + CYA + "P717" + + STD + ", " + CYA + "P8M/US" + STD + ", " + CYA + "Q800" + + STD + ", " + CYA + "X10" + STD + ", " + CYA + "X815" + STD + ".\n" + + PIN + "Chassi R51M = " + CYA + "P725" + STD + ", " + CYA + "C725" + STD + ".\n" + + PIN + "Chassi T615T01 = " + CYA + "C825" + STD + ".\n" + + PIN + "Chassi T615T01/03 = " + CYA + "C825" + STD + ", " + CYA + "C835" + STD + ".\n"); + + ott.pause("Pressione ENTER para continuar."); + System.out.println(PUR063 + "\nVerificando dependências. Aguarde!"); + + if(isAndroid) + { + System.out.println(BOL + "Você está executando esse script no " + PIN + "Android" + STD + '.'); + if(new File(path[0] + "/usr/bin/fakeroot").exists() && + new File(path[0] + "/usr/bin/adb").exists()) + System.out.println(GRE046 + "Dependências encontradas!"); + else + { + String properties = cwd + "/.termux/termux.properties", + property = "apt.default_repo=stable", + cmd[][] = { { "apt", "update" }, { "apt", "upgrade", "-y" }, + { "apt", "install", "-y", "android-tools", "fakeroot" } }; + int i; + boolean repoIsSet = false; + + try + { + Scanner file = new Scanner(new File(properties)); + + while(file.hasNextLine()) + { + String line; + + line = file.nextLine(); + + if(line.compareTo(property) == 0) + { + repoIsSet = true; + break; + } + } + + file.close(); + } + catch(Exception e) + { + e.printStackTrace(); + System.exit(-1); + } + + if(!repoIsSet) + { + try + { + DataInputStream fin = new DataInputStream(new FileInputStream(properties)); + FileOutputStream fout; + Object raw = Array.newInstance(byte.class, (int) new File(properties).length()); + + fin.readFully((byte[]) raw); + fout = new FileOutputStream(properties); + fout.write((byte[]) raw); + fout.write((property + '\n').getBytes()); + fout.close(); + fin.close(); + } + catch(Exception e) + { + e.printStackTrace(); + System.exit(-1); + } + } + + System.out.println(BLU + "* " + BOL + "Baixando dependências. Aguarde!"); + for(i = 0; i < cmd.length; i++) + if(!ott.cmdStatus(cmd[i], true)) + System.exit(-1); + + System.out.println(GRE + "Dependências instaladas com sucesso!"); + } + } + else + { + System.out.println(BOL + "Você está executando esse script no " + PIN + "Linux" + STD + '.'); + if(new File(path[2] + "/bin/adb").exists()) + System.out.println(GRE046 + "Dependência encontrada!"); + else + { + System.err.println(PUR063 + "Dependência faltando. Instale o ADB e tente novamente."); + System.exit(-1); + } + } + + ip = ott.pause(GRE046 + "Prepare-se para conectar à TV.\n\n" + + STD + "O endereço IP da sua TV pode ser encontrado no caminho abaixo:\n" + + YEL226 + "Configurações\n" + + "Preferências do dispositivo\n" + + "Sobre\n\n" + + STD + "Insira o endereço IP da TV: "); + while(true) + { + if(ott.connect(ip)) + break; + System.err.println(CLR + RED + "Endereço IP inválido."); + ip = ott.pause(STD + "Insira o endereço IP da TV: "); + } + } +} diff --git a/Methods.java b/Methods.java new file mode 100644 index 0000000..31258ec --- /dev/null +++ b/Methods.java @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2023 Matheus Garcia. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. Neither the name of the author nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ + +package OTT; + +import java.util.Scanner; +import java.io.DataInputStream; +import java.lang.reflect.Array; +import OTT.Methods; + +public class Methods extends Object +{ + public String errmut = ""; + + public boolean cmdStatus(String[] cmd, boolean print) + { + try + { + Process proc = Runtime.getRuntime().exec(cmd); + + proc.waitFor(); + if(proc.exitValue() != 0) + { + DataInputStream procerr = new DataInputStream(proc.getErrorStream()); + Object err = Array.newInstance(byte.class, procerr.available()); + + procerr.readFully((byte[]) err); + errmut = new String((byte[]) err); + if(print) + System.err.print(errmut); + return false; + } + } + catch(Exception e) + { + e.printStackTrace(); + System.exit(-1); + } + + return true; + } + + public String pause(String msg) + { + Scanner pause = new Scanner(System.in); + String line; + + System.out.print(Main.STD + msg); + line = pause.nextLine(); + + return line; + } + + public boolean connect(String ip) + { + String cmd[][] = { { "adb", "disconnect" }, { "adb", "connect", ip + ":5555" }, + { "adb", "get-state" } }, + errscan; + Scanner scanner; + int i; + + System.out.println(Main.ORA214 + "\nConectando-se à sua TV.\n"); + + for(i = 0; i < cmd.length; i++) + { + cmdStatus(cmd[i], false); + + scanner = new Scanner(errmut); + while(scanner.hasNextLine()) + { + errscan = scanner.nextLine(); + + if(errscan.compareTo("error: device unauthorized.") == 0) + { + System.out.println(Main.CYA122 + "Apareceu a seguinte janela em sua TV:\n" + + Main.BOL + "Permitir a depuração USB?\n" + + Main.CYA122 + "Marque a seguinte caixa:\n" + + Main.PIN + "Sempre permitir a partir deste computador.\n" + + Main.CYA122 + "Selecione OK.\n"); + pause("Pressione ENTER para continuar."); + i = 0; + + break; + } + else if(errscan.compareTo("error: no devices/emulators found") == 0) + { + scanner.close(); + return false; + } + } + + scanner.close(); + } + + return true; + } +} diff --git a/OTT_Android.jar b/OTT_Android.jar new file mode 100644 index 0000000..f80381f Binary files /dev/null and b/OTT_Android.jar differ diff --git a/OTT_Linux.jar b/OTT_Linux.jar new file mode 100644 index 0000000..4804d3d Binary files /dev/null and b/OTT_Linux.jar differ diff --git a/README.md b/README.md index 0d33e8d..1f991cf 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,31 @@ # Otimização Android TV (TCL) -## Otimização de TV Android TCL e Mi Box +* Lembrando que esse aplicativo é apenas para TVs TCL com Android TV, não para Mi Box. +* Aplicativo 100% compatível com o [Termux](https://f-droid.org/en/packages/com.termux). -_*Lembrando que esse script (ott.sh) é apenas para TVs TCL com Android TV, não para Mibox_ - -Esse script tem a finalizade de realizar otimizações em TVs TCL que rodam Android, removendo aplicativos lixo (Russo, Indiano, Australiano e Chineses), dentre outros que só estão presente na TV para deixar ela mais inchada e lerda. Também realiza a instalação de um novo Laucher otimizado e alguns apps. - -## Dependências para Linux: adb e wget - -_Script 100% compatível com o [Termux](https://f-droid.org/en/packages/com.termux)_ +Esse aplicativo tem a finalidade de realizar otimizações em TVs TCL que rodam Android, removendo aplicativos lixo (Russo, Indiano, Australiano e Chinês), dentre outros que só estão presente na TV para deixar ela mais inchada e lerda. Também realiza a instalação de um novo Laucher otimizado e alguns apps. +## Dependências +* adb +* fakeroot (Termux) ## Instalar - +Termux: +``` +curl -L -o OTT_Android.jar https://github.com/Krush206/optimize_android_tv/raw/java/OTT_Android.jar ; chmod +x OTT_Android.jar ``` -curl -s https://raw.githubusercontent.com/talesam/optimize_android_tv/master/ott -o ott; chmod +x ott; ./ott +Linux: +``` +curl -L -o OTT_Linux.jar https://github.com/Krush206/optimize_android_tv/raw/java/OTT_Linux.jar ; chmod +x OTT_Linux.jar ``` ## Executar - -Após o comando acima, para executar o script novamente basta digitar: - +Termux: +``` +dalvikvm -cp OTT_Android.jar OTT.Main +``` +Linux: ``` -./ott +java -jar OTT_Linux.jar ``` -![Imagem Script otimizar Android TV (TCL)](https://user-images.githubusercontent.com/981368/164873999-f7318e15-7b8e-42fa-b1fd-71ee4505753d.png) +![](https://user-images.githubusercontent.com/981368/164873999-f7318e15-7b8e-42fa-b1fd-71ee4505753d.png) diff --git a/list_apps/disable_apps.list b/list_apps/disable_apps.list deleted file mode 100644 index 9c7e578..0000000 --- a/list_apps/disable_apps.list +++ /dev/null @@ -1,41 +0,0 @@ -com.tcl.tv|TV Digital Aberta. Não faz mal mantê-la no sistema, mesmo sem uso. *SEGURO DESATIVAR*. -com.tcl.gallery|Embarcado pela TCL, responsável por prover API de exibição de imagens no sistema. Existe a nativa do Android que pode assumir esta função. *SEGURO DESATIVAR*. -com.tcl.appmarket2|Responável por manter lixos de parceiros da TCL em execução, bem como faz telemetria pesada. Exerce funções no launcher padrão não vitais. *RECOMENDADO DESATIVAR*. -com.tcl.ui_mediaCenter|Centro de mídia da TCL. Mal feito e inútil. *SEGURO DESATIVAR*. -com.tcl.messagebox|Widget do sistema, exibe no launcher padrão dados sobre a música em execução, status de dispositivos USB, conexão com internet. *SEGURO DESATIVAR*. -com.tcl.notereminder|Mensageiro do sistema, responsável por informar quando cai a conexão com internet e afins. *RECOMENDADO DESATIVAR*. -com.tcl.partnercustomizer|Embarcado pela TCL, inútil, é uma obrigação contratual da TCL com seus parceiros, força e privilegia conteúdo de parceiros. *RECOMENDADO DESATIVAR*. -com.tcl.partnercustomizer.resource|Embarcado pela TCL. Motor de background que restaura o conteúdo de parceiros caso você os tenha removido. *RECOMENDADO DESATIVAR*. -com.tcl.smartalexa|Assistente de voz Alexa. *SEGURO DESATIVAR*. -com.tcl.MultiScreenInteraction_TV|Controla a TV pelo celular (T-Cast), função que raramente é utilizada pela API nativa dele. *SEGURO DESATIVAR*. -com.android.providers.contacts|Embarcado pelo sistema Android nativo, exerce função de controle e exibição de contatos (pessoas) por API. Inútil em uma TV, *SEGURO DESATIVAR*. -com.google.android.feedback|Telemetria do Google. *RECOMENDADO DESATIVAR*. -com.google.android.tv.bugreportsender|Telemetria do Google. *RECOMENDADO DESATIVAR*. -com.google.android.youtube.tv|Youtube nativo, exibe ads e não é customizável. Recomendado substituí-lo pelo SmartYoutube. *SEGURO DESATIVAR*. -com.google.android.youtube.tvmusic| Youtube Music, exibe ads e não é customizável. Recomendado substituí-lo pelo Deezer ou Spotify. *SEGURO DESATIVAR*. -com.google.android.tvrecommendations|Atalho rápido de notificação quando um pendrive é plugado. Útil apenas para o laucher padrão. *SEGURO DESATIVAR*. -com.google.android.leanbacklauncher.recommendations|Faz parte do launcher padrão, responsável por exibir recomendações dos parceiros da TCL/Google. Inútil, *RECOMENDADO DESATIVAR*. -com.google.android.tv.remote.service|Atualiza o firmware do controle, executa serviços no background. Até hoje nenhuma atualização foi disponibilizada. Relativamente inútil, *SEGURO DESATIVAR*. -com.google.android.music|Embarcado pelo Google com função similar ao Spotify, Deezer. Inútil, *SEGURO DESATIVAR*. -com.google.android.videos|Embarcado pelo Google com função similar ao Netflix, Amazon Videos, focado em aluguel de filmes. Inútil, *SEGURO DESATIVAR*. -com.google.android.play.games|Embarcado pelo Google, alguns jogos nativos fazem uso de APIs para salvar dados, conquistas, scores na núvem. Relativamente inútil, *SEGURO DESATIVAR*. -android.autoinstalls.config.tcl.device|Função que empurra configuração automáticas "recomendadas". *SEGURO DESATIVAR*. -com.android.statementservice|Lixo do sistema para concordar com espionagens. *RECOMENDADO DESATIVAR*. -com.android.printspooler|serviço para impressão na rede, inútil em uma TV. *SEGURO DESATIVAR*. -com.android.settings.intelligence|Bind na configuração do Android que exibe configurações recomendadas. *SEGURO DESATIVAR*. -com.google.android.katniss|Comando de voz do google. Caso não utilize o controle de voz do controle. *SEGURO DESATIVAR*. -com.google.android.backuptransport|API do google, parte do core services, fornece transporte de dados em background. *SEGURO DESATIVAR*. -com.google.android.syncadapters.contacts|API para contatos, inútil em uma TV. *SEGURO DESATIVAR*. -com.google.android.partnersetup|API de Telemetria do google para parceiros deles. *RECOMENDADO DESATIVAR*. -com.google.android.syncadapters.calendar|API de calendário, relativamente inútil. *SEGURO DESATIVAR*. -com.google.android.tv.assistant|Mais do google dizendo o que você deve gostar, segundo eles mesmos. *RECOMENDADO DESATIVAR*. -com.tcl.tcl_bt_rcu_service|Serviço da TCL para gerenciamento do controle remoto. *SEGURO DESATIVAR*. -com.tcl.rc.ota|Atualização do firmware do controle remoto, sem uso. *SEGURO DESATIVAR*. -com.tcl.factory.view|Menu secreto do desenvolvedor, roda telemetria. *RECOMENDADO DESATIVAR*. -com.tcl.esticker| Exibe conteúdo da TCL. *SEGURO DESATIVAR*. -com.tcl.showmode|Modo loja. *SEGURO DESATIVAR*. -com.tcl.assistant|Serve de auxilio para o Google Assistente, porém não é ativo. *SEGURO DESATIVAR*. -com.tcl.copydatatotv|API para apk da TCL. *SEGURO DESATIVAR*. -com.tcl.bi|Bi são alguns recursos tipo esticker que acaba rodando em background, sem uso. *SEGURO DESATIVAR*. -com.android.camera2|Aplicativo de câmera, só é útil se tiver uma webcam. *SEGURO DESATIVAR*. - diff --git a/list_apps/rm_apps.list b/list_apps/rm_apps.list deleted file mode 100644 index 1967c4a..0000000 --- a/list_apps/rm_apps.list +++ /dev/null @@ -1,29 +0,0 @@ -au.com.stan.and -com.android.gallery3d -com.android.providers.calendar -com.android.providers.calendar -com.android.providers.contacts -com.android.providers.contacts -com.eros.now -com.google.android.leanbacklauncher.partnercustomizer -com.google.android.leanbacklauncher.partnercustomizer -com.graymatrix.did -com.linecorp.linetv -com.tcl.bootadservice -com.tcl.usercenter -com.tcl.usercenter -tv.wuaki.apptv -uk.co.freeview.amc_catchup -uk.co.freeview.amc_horror -uk.co.freeview.bbc -uk.co.freeview.ch4_vod -uk.co.freeview.ch5 -uk.co.freeview.explore -uk.co.freeview.fvpconfigauth -uk.co.freeview.itv -uk.co.freeview.mdsclient -uk.co.freeview.onnow -uk.co.freeview.stv -uk.co.freeview.systemdistributor -uk.co.freeview.tifbridge -uk.co.freeview.uktv diff --git a/ott b/ott deleted file mode 100644 index 3eea559..0000000 --- a/ott +++ /dev/null @@ -1,1149 +0,0 @@ -#!/usr/bin/env bash -# Otimizações Android TV -# Por Tales A. Mendonça - talesam@gmail.com -# Agradecimento ao Bruno Gonçalvez Araujo, Rodrigo Carpes, @gr1m e Mesquita (@mickaelmendes50) -# https://developer.android.com/studio/command-line/adb -# https://adbshell.com/commands/adb-shell-pm-list-packages - -# Definição de Cores -# Tabela de cores: https://misc.flogisoft.com/_media/bash/colors_format/256_colors_fg.png - -# Cores degrade -RED001='\e[38;5;1m' # Vermelho 1 -RED009='\e[38;5;9m' # Vermelho 9 -CYA122='\e[38;5;122m' # Ciano 122 -CYA044='\e[38;5;44m' # Ciano 44 -ROX063='\e[38;5;63m' # Roxo 63 -ROX027='\e[38;5;27m' # Roxo 27 -GRE046='\e[38;5;46m' # Verde 46 -GRY247='\e[38;5;247m' # Cinza 247 -LAR208='\e[38;5;208m' # Laranja 208 -LAR214='\e[38;5;214m' # Laranja 214 -AMA226='\e[38;5;226m' # Amarelo 226 -BLU039='\e[38;5;44m' # Azul 39 -MAR094='\e[38;5;94m' # Marrom 94 -MAR136='\e[38;5;136m' # Marrom 136 - -# Cores chapadas -CIN='\e[30;1m' # Cinza -RED='\e[31;1m' # Vermelho -GRE='\e[32;1m' # Verde -YEL='\e[33;1m' # Amarelo -BLU='\e[34;1m' # Azul -ROS='\e[35;1m' # Rosa -CYA='\e[36;1m' # Ciano -NEG='\e[37;1m' # Negrito -CUI='\e[40;31;5m' # Vermelho pisacando, aviso! -STD='\e[m' # Fechamento de cor - -# --- Início Funções --- - -# Versão do script -VER="0.5.53" - -VER_ON="$(curl -s https://raw.githubusercontent.com/talesam/optimize_android_tv/master/ott | grep -m1 VER=\" | sed 's|VER="||g;s|"||g')" - -versao(){ - clear - if [ "${VER_ON}" \> "${VER}" ]; then - VER=$VER_ON - echo "" - echo -e " ${BLU}*${STD} ${NEG}Nova versão:${STD}${YEL} v$VER${STD}" - echo -e " ${BLU}*${STD}Atualizando o script, aguarde...${STD}" && sleep 1 - curl -s https://raw.githubusercontent.com/talesam/optimize_android_tv/master/ott -o new_ott - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Atualizado com sucesso!" && sleep 1 - cd .. - mv -f .tmp/new_ott ott - chmod +x ott - ./ott - exit - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro ao atualizar.\n Verifique sua conexão e tente novamente.${STD}" ; exit 0 - fi - else - echo "" - echo -e " ${GRE}*${STD} ${NEG}Script atualizado, carregando o sistema...${STD}" && sleep 3 - fi -} - -# Separação com cor -separacao(){ - for i in {16..21} {21..16} ; do - echo -en "\e[38;5;${i}m____\e[0m" - done ; echo -} - -# Função pause -pause(){ - read -p "$*" -} - -# Verifica se está usando Termux -termux(){ - clear - echo "" - separacao - echo -e " ${NEG}Bem vindo(a) ao script OTT (Otimização TV TCL)${STD}" - echo "" - echo -e " ${NEG}Modelos compatíveis:${STD}" - echo -e " ${ROS}Chassi T221T01 = ${STD}${CYA}S615${STD}" - echo -e " ${ROS}Chassi R51AT01 = ${STD}${CYA}P635${STD}" - echo -e " ${ROS}Chassi RT41 = ${STD}${CYA}ES560${STD}, ${CYA}S6500${STD}, ${CYA}S5300${STD}" - echo -e " ${ROS}Chassi RT51 = ${STD}${CYA}A6${STD}, ${CYA}A8${STD}, ${CYA}A10${STD}, ${CYA}C715${STD}, ${CYA}C716${STD}, ${CYA}C717${STD}, ${CYA}C815${STD}, ${CYA}EP640${STD}, ${CYA}EP645${STD}, ${CYA}EP660${STD}, ${CYA}EP685${STD}, ${CYA}EC785${STD}, ${CYA}K61${STD}, ${CYA}P615${STD}, ${CYA}P715${STD}, ${CYA}P717${STD}, ${CYA}P8M/US${STD}, ${CYA}Q800${STD}, ${CYA}X10${STD}, ${CYA}X815${STD}" - echo -e " ${ROS}Chassi R51M = ${STD}${CYA}P725${STD}, ${CYA}C725${STD}" - echo -e " ${ROS}Chassi T615T01 = ${STD}${CYA}C825${STD}" - echo -e " ${ROS}Chassi T615T01/03 = ${STD}${CYA}C825${STD}, ${CYA}C835${STD}" - separacao - echo "" - pause " Tecle [Enter] para continuar..." && sleep 1 ; clear - echo "" - echo -e " ${ROX063}Verificando dependências, aguarde...${STD}" && sleep 1 - - #Testa se possui as dependẽncias para rodar o script - if [[ "$OSTYPE" == "linux-gnu" ]]; then - echo "" - echo -e " ${NEG}Você está executando este scrit no${STD} ${ROS}Linux${STD}" - echo "" - - # Testa se existem os arquivos adb e wget no Linux - if [ -e "/usr/bin/adb" ] && [ -e "/usr/bin/wget" ]; then - echo -e " ${GRE046}Dependencias encontradas, conecte-se na TV.${STD}" - echo "" - pause " Tecle [Enter] para continuar..." ; conectar_tv - else - echo -e " ${ROX071}Dependencias faltando.\n Instale o adb e wget na sua distro Linux e rode o comando novamente.${STD}" - ecit 0 - fi - - elif [[ "$OSTYPE" == "linux-android" ]]; then - echo "" - echo -e " ${NEG}Você está executando este scrit no${STD} ${ROS}Termux${STD}" - echo "" - - # Testa se existem os arquivos adb, fakeroot, tput e wget no termux - if [ -e "/data/data/com.termux/files/usr/bin/adb" ] && [ -e "/data/data/com.termux/files/usr/bin/fakeroot" ] && [ -e "/data/data/com.termux/files/usr/bin/tput" ] && [ -e "/data/data/com.termux/files/usr/bin/wget" ]; then - echo -e " ${GRE046}Dependencias encontradas, conecte-se na TV.${STD}" - echo "" - pause " Tecle [Enter] para continuar..." ; conectar_tv - else - echo -e " ${BLU}*${STD} ${NEG}Baixando dependências, aguarde...${SDT}" && sleep 1 - - # Configura o repositório padrão e testa se já existe - repo="$HOME/.termux/termux.properties" - if ! grep -q "apt.default_repo=stable" "$repo"; then - echo "apt.default_repo=stable" >> "$repo" - fi - - # Atualiza o repositório e todo o sistema - apt update -y >/dev/null 2>&1 && - apt upgrade -y -o Dpkg::Options::=--force-confold >/dev/null 2>&1 - - # Instala dependencias - pkg install -y wget >/dev/null 2>&1 && - pkg install -y ncurses-utils >/dev/null 2>&1 && - pkg install -y android-tools >/dev/null 2>&1 && - pkg install -y fakeroot >/dev/null 2>&1 - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Instalação conluida com sucesso!${STD}" - echo "" - pause " Tecle [Enter] para se conectar a TV..." ; conectar_tv - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro ao baixar e instalar as dependências.\n Verifique sua conexão e tente novamente.${STD}" ; exit 0 - fi - fi - fi -} - -# Conexão da TV -conectar_tv(){ - clear - export ANDROID_NO_USE_FWMARK_CLIENT=1 - echo "" - echo " Digite o endereço IP da sua TV que encontra no" - echo -e " caminho abaixo e tecle ${NEG}[Enter]${STD} para continuar:" - echo "" - echo -e " ${AMA226}Configurações${STD}, ${AMA226}Preferências do dispositivo${STD}," - echo -e " ${AMA226}Sobre${STD}, ${AMA226}Status${STD}." - echo "" - read IP - - ping -c 1 $IP >/dev/null - - # Testa se a TV está ligada com o modo depuração ativo - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${LAR214}Conectando-se a sua TV...${STD}" && sleep 2 - fakeroot adb connect $IP > /dev/null 2>&1 - if [ "$?" -eq "0" ]; then - echo -e " ${GRE046}Conectado com sucesso a TV!${STD}" && sleep 2 - echo "" - clear - until fakeroot adb shell pm list packages -e 2>/dev/null; do - echo -e " ${CYA122}Apareceu a seguinte janela em sua TV:${STD}" - echo -e " ${NEG}Permitir a depuração USB?${STD}" - echo "" - echo -e " ${CYA122}Marque a seguinte caixa:${STD}" - echo -e " ${ROS}Sempre permitir a partir deste computador${STD}" - echo -e " ${CYA122}Depois de marcar a caixa e der${STD} ${NEG}OK${STD}" - echo "" - pause " Tecle [Enter] para continuar..." ; - - # Testa se o humano marcou a opção na TV - fakeroot adb disconnect $IP 2>/dev/null && fakeroot adb connect $IP 2>/dev/null - if [ "$(fakeroot adb connect $IP | cut -f1,2 -d" ")" = "already connected" ]; then - menu_principal - else - echo "" - echo -e " ${CYA}Não me engana, você ainda\n não marcou a opção na TV :-(\n Vou te dar outra chance!${STD}" - echo "" - pause " Ative a opção e tecle [Enter]" - fi - done - menu_principal - else - echo -e " ${RED}*${STD} ${NEG}Erro! Falha na conexão, Verifique seu endereço de IP${STD}" - pause " Tecle [Enter] para tentar novamente..." ; conectar_tv - fi - else - echo -e " ${RED}*${STD} ${NEG}Erro! Falha na conexão, Verifique seu endereço de IP${STD}" - pause " Tecle [Enter] para tentar novamente..." ; conectar_tv - fi -} - - -# Remover apps Lixo -rm_apps(){ - clear - OIFS=$IFS - IFS=$'\n' - - # Verifica se o arquivo existe - if [ -e "rm_apps.list" ]; then - for app_rm in $(cat rm_apps.list); do - fakeroot adb shell pm uninstall --user 0 $app_rm >/dev/null - if [ "$?" -eq "0" ]; then - echo -e " ${BLU}*${STD} App ${CYA}$app_rm${STD} ${GRE046}removido com sucesso!${STD}" && sleep 1 - else - echo -e " ${RED}*${STD} App ${CYA}$app_rm${STD} já foi removido ou não existe" && sleep 1 - fi - done - else - - # Baixar lista lixo dos apps - echo -e " ${BLU}*${STD} ${NEG}Aguarde, baixando lista negra de apps...${STD}" && sleep 2 - wget https://raw.githubusercontent.com/talesam/optimize_android_tv/master/list_apps/rm_apps.list >/dev/null 2>&1 && clear - if [ -e "rm_apps.list" ]; then - for app_rm in $(cat rm_apps.list); do - fakeroot adb shell pm uninstall --user 0 $app_rm >/dev/null - if [ "$?" -eq "0" ]; then - echo -e " ${BLU}*${STD} App ${CYA}$app_rm${STD} ${GRE046}removido com sucesso!${STD}" && sleep 1 - else - echo -e " ${RED}*${STD} App ${CYA}$app_rm${STD} já foi removido ou não existe" && sleep 1 - fi - done - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro ao baixar a lista LIXO dos apps. Verifique sua conexão.${STD}" - echo "" - fi - fi - echo "" - pause " Tecle [Enter] para retornar ao menu principal..." ; menu_principal -IFS=$OIFS -} - -### Desativar/Ativar Apps - INICIO -COLS=$(tput cols) - -ativar() { - tput clear - - OIFS=$IFS - IFS=$'\n' - - apk_disabled="$(fakeroot adb shell pm list packages -d | cut -f2 -d:)" - - # Verifica se o arquivo existe no diretório local - if [ -e "disable_apps.list" ]; then - for apk_full in $(cat disable_apps.list); do - apk="$(echo "$apk_full" | cut -f1 -d"|")" - apk_desc="$(echo "$apk_full" | cut -f2 -d"|")" - if [ "$(echo "$apk_disabled" | grep "$apk")" != "" ]; then - echo -e "\n$(linha)\n"${NEG}" $apk_desc"${STD}"\n\"$apk\"\n Digite ${GRE046}S${STD}(Sim) para ${GRE046}ATIVAR${STD} ou ${GRY247}N${STD}(Não) para manter ${GRY247}DESATIVADO${STD}" - pergunta_ativar - fi - done - else - - # Baixar lista de apps para serem desativados - echo "" - echo -e " ${BLU}*${STD} ${NEG}Aguarde, baixando lista de apps...${STD}" && sleep 1 - wget https://raw.githubusercontent.com/talesam/optimize_android_tv/master/list_apps/disable_apps.list >/dev/null 2>&1 - if [ -e "disable_apps.list" ]; then - for apk_full in $(cat disable_apps.list); do - apk="$(echo "$apk_full" | cut -f1 -d"|")" - apk_desc="$(echo "$apk_full" | cut -f2 -d"|")" - if [ "$(echo "$apk_disabled" | grep "$apk")" = "" ]; then - echo -e "\n$(linha)\n"${NEG}" $apk_desc"${STD}"\n\"$apk\"\n Digite ${GRE046}S${STD}(Sim) para ${GRE046}ATIVAR${STD} ou ${GRY247}N${STD}(Não) para manter ${GRY247}DESATIVADO${STD}" - pergunta_ativar - fi - done - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro ao baixar a lista de apps. Verifique sua conexão.${STD}" - echo "" - pause " Tecle [Enter] para retornar ao menu principal..." ; menu_principal - fi - fi - IFS=$OIFS -} - -pergunta_ativar() { - read -p " [S/N]: " -e -n1 resposta - echo -e "$(linha)\n" - [[ $resposta != +(s|S|n|N) ]] && pergunta_ativar || resposta_ativar -} - -resposta_ativar() { - [[ "$resposta" =~ ^([Ss])$ ]] && { echo -e ""${LAR208}"Informação sobre o pacote${STD} ${CYA044}${apk}${STD}";fakeroot adb shell pm enable ${apk};} -} - -desativar() { - tput clear - - OIFS=$IFS - IFS=$'\n' - - apk_disabled="$(fakeroot adb shell pm list packages -d | cut -f2 -d:)" - - # Verifica se o arquivo existe no diretório local - if [ -e "disable_apps.list" ]; then - for apk_full in $(cat disable_apps.list); do - apk="$(echo "$apk_full" | cut -f1 -d"|")" - apk_desc="$(echo "$apk_full" | cut -f2 -d"|")" - if [ "$(echo "$apk_disabled" | grep "$apk")" = "" ]; then - echo -e "\n$(linha)\n"${NEG}" $apk_desc"${STD}"\n\"$apk\"\n Digite ${GRY247}S${STD}(Sim) para ${GRY247}DESATIVAR${STD} ou ${GRE046}N${STD}(Não) para manter ${GRE046}ATIVO${STD}" - pergunta_desativar - fi - done - else - - # Baixar lista de apps para serem desativados - echo "" - echo -e " ${BLU}*${STD} ${NEG}Aguarde, baixando lista de apps...${STD}" && sleep 1 - wget https://raw.githubusercontent.com/talesam/optimize_android_tv/master/list_apps/disable_apps.list >/dev/null 2>&1 - if [ -e "disable_apps.list" ]; then - for apk_full in $(cat disable_apps.list); do - apk="$(echo "$apk_full" | cut -f1 -d"|")" - apk_desc="$(echo "$apk_full" | cut -f2 -d"|")" - if [ "$(echo "$apk_disabled" | grep "$apk")" = "" ]; then - echo -e "\n$(linha)\n"${NEG}" $apk_desc"${STD}"\n\"$apk\"\n Digite ${GRY247}S${STD}(Sim) para ${GRY247}DESATIVAR${STD} ou ${GRE046}N${STD}(Não) para manter ${GRE046}ATIVO${STD}" - pergunta_desativar - fi - done - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro ao baixar a lista de apps. Verifique sua conexão.${STD}" - echo "" - pause " Tecle [Enter] para retornar ao menu principal..." ; menu_principal - fi - fi - IFS=$OIFS -} - -pergunta_desativar() { - read -p " [S/N]: " -e -n1 resposta - echo -e "$(linha)\n" - [[ $resposta != +(s|S|n|N) ]] && pergunta_desativar || resposta_desativar -} - -resposta_desativar() { - [[ "$resposta" =~ ^([Ss])$ ]] && { echo -e ""${LAR208}"Informação sobre o pacote${STD} ${CYA044}${apk}${STD}";fakeroot adb shell pm disable-user --user 0 ${apk} >/dev/null 2>&1;} -} - -linha() { - printf '%*s' "$COLS" '' | sed "s/ /_/g" -} -### Desativar/Ativar Apps - FIM - -# Instalar e ativar Launcher ATV Pro TCL Mod + Widget -install_launcher(){ - clear - # Remove versão do ATV PRO - if [ "$(fakeroot adb shell pm list packages -u | cut -f2 -d: | grep ca.dstudio.atvlauncher.pro)" != "" ]; then - echo "" - echo -e " ${BLU}*${STD} ${NEG}Removendo versão do Launcher ATV PRO...${STD}" && sleep 1 - echo "" - fakeroot adb shell pm uninstall --user 0 ca.dstudio.atvlauncher.pro - if [ "$?" -eq "0" ]; then - echo -e " ${GRE}*${STD} ${NEG}Launcher ATV PRO removido com sucesso!${STD}" - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro ao remover Launcher ATV PRO.${STD}" - pause " Tecle [Enter] para continuar com a instalação..." - fi - fi - - # Remove versão do ATV FREE - if [ "$(fakeroot adb shell pm list packages -u | cut -f2 -d: | grep ca.dstudio.atvlauncher.pro)" != "" ]; then - echo "" - echo -e " ${BLU}*${STD} ${NEG}Removendo versão do Launcher ATV FRE...${STD}" && sleep 1 - echo "" - fakeroot adb shell pm uninstall --user 0 ca.dstudio.atvlauncher.free - if [ "$?" -eq "0" ]; then - echo -e " ${GRE}*${STD} ${NEG}Launcher ATV FREE removido com sucesso!${STD}" - else - echo -e " ${RED}*${STD} ${NEG}Erro ao remover Launcher ATV FREE.${STD}" - pause " Tecle [Enter] para continuar com a instalação..." - fi - fi - - if [ "$(fakeroot adb shell pm list packages -u | cut -f2 -d: | grep com.tcl.home)" != "" ]; then - if [ "$(fakeroot adb shell pm list packages -e | cut -f2 -d: | grep com.tcl.home)" = "" ]; then - echo "" - echo -e " ${BLU}*${STD} ${NEG}Ativando Launcher ATV PRO MOD...${STD}" && sleep 1 - fakeroot adb shell pm enable com.tcl.home - if [ "$?" -eq "0" ]; then - - # Desativa o Launcher padrão - fakeroot adb shell pm disable-user --user 0 com.google.android.tvlauncher - if [ "$(fakeroot adb shell pm disable-user --user 0 com.google.android.tvlauncher | grep disabled-user | cut -f5 -d " ")" = "disabled-user" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Launcher ATV PRO MOD ativo com sucesso!${STD}" - echo "" - echo -e " ${BLU}*${STD} ${NEG}Iniciando a nova Launcher ATV PRO MOD, aguarde...${STD}" && sleep 1 - fakeroot adb shell monkey -p com.tcl.home -c android.intent.category.LAUNCHER 1 - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Launcher ATV PRO MOD iniciado com sucesso!${STD}" && sleep 1 - echo "" - echo -e " ${BLU}*${STD} ${NEG}Atualizando as permissões...${STD}" - - # Seta permissão para o widget - fakeroot adb shell appwidget grantbind --package com.tcl.home --user 0 - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Permissões atualizadas com sucesso!${STD}" - else - pause " Erro ao ativar o Launcher, verifique sua conexão. Tecle [Enter] para continuar." ; menu_launcher - fi - else - pause " Erro ao ativar o Launcher, verifique sua conexão. Tecle [Enter] para continuar." ; menu_launcher - fi - else - pause " Erro ao ativar o Launcher, verifique sua conexão. Tecle [Enter] para continuar." ; menu_launcher - fi - else - pause " Erro ao ativar Launcher ATV MOD. Tecle [Enter] para retornar ao menu" ; menu_launcher - fi - else - echo "" - echo -e " ${BLU}*${STD} ${NEG}Launcher ATV PRO MOD já está ativo.${STD}" - pause " Tecle [Enter] para retornar ao menu" ; menu_launcher - fi - else - echo "" - echo -e " ${BLU}*${STD} ${NEG}Aguarde a instalação do novo Launcher ATV PRO MOD...${STD}" && sleep 2 - - # Baixa o Launcher ATV PRO modificado e o Widget - echo "" - echo -e " ${BLU}*${STD} ${NEG}Baixando a versão mais recente do Launcher ATV PRO MOD e Widget...${STD}" - wget https://cloud.talesam.org/s/sPykjECkWRjSNya/download/tclhome.apk - wget https://cloud.talesam.org/s/wsqY5QrdkcXHd4m/download/chronus.apk && clear - - if [ "$?" -ne 0 ]; then - pause " Erro ao baixar os arquivos, verifique a sua conexão. [Enter] para retornar ao menu" ; menu_launcher - else - echo "" - echo -e " ${BLU}*${STD} ${NEG}Instalando o novo Launcher, aguarde...${STD}" && sleep 1 - fakeroot adb install -r tclhome.apk - fakeroot adb install -r chronus.apk - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Launcher ATV PRO MOD instalado com sucesso!${STD}" - echo "" - echo -e " ${BLU}*${STD} ${NEG}Ativando o novo Launcher, aguarde...${STD}" && sleep 1 - - # Desativa o Launcher padrão - fakeroot adb shell pm disable-user --user 0 com.google.android.tvlauncher - if [ "$(fakeroot adb shell pm disable-user --user 0 com.google.android.tvlauncher | grep disabled-user | cut -f5 -d " ")" = "disabled-user" ]; then - echo "Launcher ATV PRO MOD ativo com sucesso!" - echo "Ativando a nova Launcher ATV PRO MOD..." && sleep 2 - fakeroot adb shell monkey -p com.tcl.home -c android.intent.category.LAUNCHER 1 - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Launcher ATV PRO MOD ativado com sucesso!${STD}" - echo "" - echo -e " ${BLU}*${STD} ${NEG}Abrindo Launcher ATV PRO MOD...${STD}" && sleep 1 - else - pause " Erro ao ativar o Launcher ATV PRO, verifique sua conexão. Tecle [Enter] para continuar." ; menu_Launcher - fi - else - pause " Erro ao ativar o Launcher ATV PRO, verifique sua conexão. Tecle [Enter] para continuar." ; menu_launcher - fi - echo "" - echo -e " ${BLU}*${STD} ${NEG}Atualizando as permissões...${STD}" && sleep 1 - - # Seta permissão para o widget - fakeroot adb shell appwidget grantbind --package com.tcl.home --user 0 - if [ "$?" -ne "0" ]; then - pause " Erro ao setar permissões, verifique sua conexão. Tecle [Enter] para continuar." ; menu_launcher - else - echo -e " ${GRE}*${STD} ${NEG}Permissões atualizadas com sucesso!${STD}" - fi - else - pause " Erro na instalação.. Tecle [Enter] para continuar." ; menu_launcher - fi - fi - fi - pause " Tecle [Enter] para retornar ao menu." ; menu_launcher -} - -# Desativar Launcher ATV Pro TCL Mod + Widget -desativar_launcher(){ - clear - if [ "$(fakeroot adb shell pm list packages -e | cut -f2 -d: | grep com.tcl.home)" != "" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Ativando Lauche Padrão...${STD}" && sleep 2 - echo "" - fakeroot adb shell pm enable com.google.android.tvlauncher - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${CIN}*${STD} ${NEG}Desativando Launcher ATV PRO MOD...${STD}" && sleep 2 - echo "" - fakeroot adb shell pm disable-user --user 0 com.tcl.home - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${CIN}*${STD} ${NEG}Launcher ATV PRO MOD desativado com sucesso!${STD}" && sleep 1 - echo "" - else - pause " Erro ao desativar o Launcher ATV PRO MOD, verifique sua conexão. Tecle [Enter] para continuar." ; menu_launcher - fi - fakeroot adb shell am start -n com.google.android.tvlauncher/.MainActivity - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Configurado o Launcher padrão da Android TV com sucesso!${STD}" - echo "" - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro abrir o Launcher padrão, verifique sua conexão.${STD}" - echo "" - pause " Tecle [Enter] para retornar ao menu" ; menu_launcher - fi - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro ao desativar Launcher ATV PRO MOD.${STD}" - echo "" - pause " Tecle [Enter] para retornar ao menu" ; menu_launcher - fi - else - echo "" - echo -e " ${ROS}*${STD} ${NEG}Launcher ATV PRO MOD ainda não instalado.${STD}" - echo "" - fi - pause " Tecle [Enter] para retornar ao menu" ; menu_launcher -} - -# Instalar GoogleTV launcher -install_googletv(){ - clear - echo "" - echo -e " ${BLU}*${STD} ${NEG}Aguarde a instalação do GoogleTV Home...${STD}" && sleep 2 - - # Baixa o app GoogleTV Home (verificar versão no commit de upload mais recente) - echo "" - echo -e " ${BLU}*${STD} ${NEG}Baixando o GoogleTV Home...${STD}" && sleep 1 - wget https://cloud.talesam.org/s/2SLPBmLdEwgz9iB/download/GoogleTV_Home.apk && clear - - if [ "$?" -ne 0 ]; then - pause " Erro ao baixar os arquivos, verifique a sua conexão. [Enter] para retornar ao menu" ; menu_googletv - else - - # Instala o GoogleTV usando adb - echo "" - echo -e " ${BLU}*${STD} ${NEG}Instalando GoogleTV Home...${STD}" && sleep 1 - fakeroot adb install -r GoogleTV_Home.apk - - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Google TV Home instalado com sucesso!${STD}" - - # Ativando o GoogleTV - echo "" - echo -e " ${BLU}*${STD} ${NEG}Ativando o novo Launcher, aguarde...${STD}" && sleep 1 - fakeroot adb shell pm enable com.google.android.apps.tv.launcherx - if [ "$(fakeroot adb shell pm enable com.google.android.apps.tv.launcherx | grep enable | cut -f5 -d " ")" = "enabled" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}GoogleTV Home ativado com sucesso!${STD}" - - # Desativa o Launcher padrão - echo "" - echo -e " ${BLU}*${STD} ${NEG}Desativando launcher padrão...${STD}" && sleep 1 - fakeroot adb shell pm disable-user --user 0 com.google.android.tvlauncher - if [ "$(fakeroot adb shell pm disable-user --user 0 com.google.android.tvlauncher | grep disabled-user | cut -f5 -d " ")" = "disabled-user" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Launcher padrão desativado com sucesso!${STD}" && sleep 2 - else - pause " Falha ao desativar o launcher padrão, verifique a sua conexão. [Enter] para retornar ao menu" ; menu_googletv - fi - else - pause " Falha ao ativar o GoogleTV, verifique a sua conexão. [Enter] para retornar ao menu" ; menu_googletv - fi - else - pause " Erro ao instalar o GoogleTV, verifique a sua conexão. [Enter] para retornar ao menu" ; menu_googletv - fi - fi - pause " Tecle [Enter] para retornar ao menu." ; menu_googletv -} - -# Desativar a GoogleTV Home -desativar_googletv(){ - clear - - if [ "$(fakeroot adb shell pm list packages -e | cut -f2 -d: | grep com.google.android.apps.tv.launcherx)" != "" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Ativando Launcher Padrão...${STD}" && sleep 2 - echo "" - fakeroot adb shell pm enable com.google.android.tvlauncher - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${CIN}*${STD} ${NEG}Desativando GoogleTV Home...${STD}" && sleep 2 - echo "" - fakeroot adb shell pm disable-user --user 0 com.google.android.apps.tv.launcherx - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${CIN}*${STD} ${NEG}GoogleTV Home desativado com sucesso!${STD}" && sleep 1 - echo "" - else - pause " Erro ao desativar o GoogleTV Home, verifique sua conexão. Tecle [Enter] para continuar." ; menu_googletv - fi - fakeroot adb shell am start -n com.google.android.tvlauncher/.MainActivity - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Configurado o Laucher padrão da Android TV com sucesso!${STD}" - echo "" - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro abrir o Laucher padrão, verifique sua conexão.${STD}" - echo "" - pause " Tecle [Enter] para retornar ao menu" ; menu_googletv - fi - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro ao desativar GoogleTV Home.${STD}" - echo "" - pause " Tecle [Enter] para retornar ao menu" ; menu_googletv - fi - else - echo "" - echo -e " ${ROS}*${STD} ${NEG}GoogleTV Home ainda não instalado.${STD}" - echo "" - fi - pause " Tecle [Enter] para retornar ao menu" ; menu_googletv -} - -# --- INSTALAR NOVOS APPS - INÍCIO - -# Instalar Aptoide TV -install_aptoidetv(){ - clear - if [ "$(fakeroot adb shell pm list packages -e | cut -f2 -d: | grep cm.aptoidetv.pt)" != "" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Aptoide TV já está instalado.${STD}" - pause " Tecle [Enter] para retornar ao menu Instalar Novos Apps" ; menu_install_apps - else - - # Baixa o Apdoide TV - echo "" - echo -e " ${BLU}*${STD} ${NEG}Baixando o Aptoide TV...${STD}" && sleep 1 - wget https://cloud.talesam.org/s/SM584MFeEqsTZJw/download/aptoide.apk && clear - if [ "$?" -ne 0 ]; then - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro ao baixar o arquivo. Verifique sua conexão ou tente mais tarde.${STD}" - pause " Tecle [Enter] para continuar." ; menu_launcher - else - echo "" - echo -e " ${BLU}*${STD} ${NEG}Instalando o Aptoide TV, aguarde...${STD}" && sleep 1 - fakeroot adb install -r aptoide.apk - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Aptoide TV instalado com sucesso!${STD}" - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro na instalação.${STD}" - fi - fi - fi - pause "Tecle [Enter] para retonar ao menu" ; menu_install_apps -} - -# Instalar Deezer -install_deezer(){ - clear - if [ "$(fakeroot adb shell pm list packages -e | cut -f2 -d: | grep deezer.android.tv)" != "" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Deezer já está instalado.${STD}" - pause " Tecle [Enter] para retornar ao menu Instalar Novos Apps" ; menu_install_apps - else - - # Baixa o Deezer - echo "" - echo -e " ${BLU}*${STD} ${NEG}Baixando o Deezer...${STD}" && sleep 1 - wget https://cloud.talesam.org/s/xbToRz4sC6ZKBRK/download/deezer.apk && clear - if [ "$?" -ne 0 ]; then - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro ao baixar o arquivo. Verifique sua conexão ou tente mais tarde.${STD}" - else - echo "" - echo -e " ${BLU}*${STD} ${NEG}Instalando o Deezer, aguarde...${STD}" - fakeroot adb install -r deezer.apk - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Deezer instalado com sucesso!${STD}" - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro na instalação.${STD}" - fi - fi - fi - pause "Tecle [Enter] para retonar ao menu" ; menu_install_apps -} - -# Instalar Spotify -install_spotify(){ - clear - if [ "$(fakeroot adb shell pm list packages -e | cut -f2 -d: | grep com.spotify.tv.android)" != "" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Spotify já está instalado.${STD}" - pause " Tecle [Enter] para retornar ao menu Instalar Novos Apps" ; menu_install_apps - else - - # Baixa o Spotify - echo "" - echo -e " ${BLU}*${STD} ${NEG}Baixando o Spotify...${STD}" && sleep 1 - wget https://cloud.talesam.org/s/a2fPESw6f3J3RSZ/download/spotify.apk && clear - if [ "$?" -ne 0 ]; then - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro ao baixar o arquivo. Verifique sua conexão ou tente mais tarde.${STD}" - else - echo "" - echo -e " ${BLU}*${STD} ${NEG}Instalando o Spotify, aguarde...${STD}" - fakeroot adb install -r spotify.apk - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Spotify instalado com sucesso!${STD}" - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro na instalação.${STD}" - fi - fi - fi - pause "Tecle [Enter] para retonar ao menu" ; menu_install_apps -} - -# Instalar TV Bro -install_tvbro(){ - clear - if [ "$(fakeroot adb shell pm list packages -e | cut -f2 -d: | grep com.phlox.tvwebbrowser)" != "" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}TV Bro já está instalado.${STD}" - pause " Tecle [Enter] para retornar ao menu Instalar Novos Apps" ; menu_install_apps - else - - # Baixa o TV Bro - echo "" - echo -e " ${BLU}*${STD} ${NEG}Baixando o TV Bro...${STD}" && sleep 1 - wget https://cloud.talesam.org/s/36GRxq5WeAcqbNe/download/tvbro.apk && clear - if [ "$?" -ne 0 ]; then - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro ao baixar o arquivo. Verifique sua conexão ou tente mais tarde.${STD}" - else - echo "" - echo -e " ${BLU}*${STD} ${NEG}Instalando o TV Bro, aguarde...${STD}" - fakeroot adb install -r tvbro.apk - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}TV Bro instalado com sucesso!${STD}" - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro na instalação.${STD}" - fi - fi - fi - pause "Tecle [Enter] para retonar ao menu" ; menu_install_apps -} - -# Instalar Smart Youtube Next -install_stubenext(){ - clear - if [ "$(fakeroot adb shell pm list packages -e | cut -f2 -d: | grep com.liskovsoft.videomanager)" != "" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Smart Youtube Next já está instalado.${STD}" - pause " Tecle [Enter] para retornar ao menu Instalar Novos Apps" ; menu_install_apps - else - - # Baixa o Smart Youtube Next - echo "" - echo -e " ${BLU}*${STD} ${NEG}Baixando o Smart Youtube Next...${STD}" && sleep 1 - wget https://cloud.talesam.org/s/jrsL9ZkfsCTF7Rk/download/stubenext.apk && clear - if [ "$?" -ne 0 ]; then - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro ao baixar o arquivo. Verifique sua conexão ou tente mais tarde.${STD}" - else - echo "" - echo -e " ${BLU}*${STD} ${NEG}Instalando o Smart Youtube Next, aguarde...${STD}" - fakeroot adb install -r stubenext.apk - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Smart Youtube instalado com sucesso!${STD}" - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro na instalação.${STD}" - fi - fi - fi - pause "Tecle [Enter] para retonar ao menu" ; menu_install_apps -} - -# Instalar Send Files -install_sendfiles(){ - clear - if [ "$(fakeroot adb shell pm list packages -e | cut -f2 -d: | grep com.crunhyroll.crunchyroid)" != "" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Send Files já está instalado.${STD}" - pause " Tecle [Enter] para retornar ao menu Instalar Novos Apps" ; menu_install_apps - else - - # Baixa o Send Files - echo "" - echo -e " ${BLU}*${STD} ${NEG}Baixando o Send Files...${STD}" && sleep 1 - wget https://cloud.talesam.org/s/azC8StQbBAepTPG/download/SendFiles.apk && clear - if [ "$?" -ne 0 ]; then - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro ao baixar o arquivo. Verifique sua conexão ou tente mais tarde.${STD}" - else - echo "" - echo -e " ${BLU}*${STD} ${NEG}Instalando o Send Files, aguarde...${STD}" - fakeroot adb install -r SendFiles.apk - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Send Files instalado com sucesso!${STD}" - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro na instalação.${STD}" - fi - fi - fi - pause "Tecle [Enter] para retonar ao menu" ; menu_install_apps -} - -# Instalar Youcine -install_youcine(){ - clear - if [ "$(fakeroot adb shell pm list packages -e | cut -f2 -d: | grep com.stremio.one)" != "" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Youcine já está instalado.${STD}" - pause " Tecle [Enter] para retornar ao menu Instalar Novos Apps" ; menu_install_apps - else - - # Baixa o Stremio - echo "" - echo -e " ${BLU}*${STD} ${NEG}Baixando o Youcine...${STD}" && sleep 1 - wget https://cloud.talesam.org/s/aL4s3eHFQKMeGfb/download/youcine.apk && clear - if [ "$?" -ne 0 ]; then - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro ao baixar o arquivo. Verifique sua conexão ou tente mais tarde.${STD}" - else - echo "" - echo -e " ${BLU}*${STD} ${NEG}Instalando o Youcine, aguarde...${STD}" - fakeroot adb install -r youcine.apk - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Youcine instalado com sucesso!${STD}" - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro na instalação.${STD}" - fi - fi - fi - pause "Tecle [Enter] para retonar ao menu" ; menu_install_apps -} - -# Instalar X-Plore -install_xplore(){ - clear - if [ "$(fakeroot adb shell pm list packages -e | cut -f2 -d: | grep com.lonelycatgames.Xplore)" != "" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}X-Plore já está instalado.${STD}" - pause " Tecle [Enter] para retornar ao menu Instalar Novos Apps" ; menu_install_apps - else - - # Baixa o X-Plore - echo "" - echo -e " ${BLU}*${STD} ${NEG}Baixando o X-Plore...${STD}" && sleep 1 - wget https://cloud.talesam.org/s/oXHT23tYpBcdrYG/download/XPlore.apk && clear - if [ "$?" -ne 0 ]; then - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro ao baixar o arquivo. Verifique sua conexão ou tente mais tarde.${STD}" - else - echo "" - echo -e " ${BLU}*${STD} ${NEG}Instalando o X-Plore, aguarde...${STD}" - fakeroot adb install -r XPlore.apk - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}X-Plore instalado com sucesso!${STD}" - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro na instalação.${STD}" - fi - fi - fi - pause "Tecle [Enter] para retonar ao menu" ; menu_install_apps -} - -# Instalar Setting (Troca Launcher) -install_setting(){ - clear - if [ "$(fakeroot adb shell pm list packages -e | cut -f2 -d: | grep dp.ws.popcorntime)" != "" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Setting já está instalado.${STD}" - pause " Tecle [Enter] para retornar ao menu Instalar Novos Apps" ; menu_install_apps - else - - # Baixa o Setting - echo "" - echo -e " ${BLU}*${STD} ${NEG}Baixando o Setting...${STD}" && sleep 1 - wget https://cloud.talesam.org/s/9YcopayZNTiNFCd/download/setting.apk && clear - if [ "$?" -ne 0 ]; then - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro ao baixar o arquivo. Verifique sua conexão ou tente mais tarde.${STD}" - else - echo "" - echo -e " ${BLU}*${STD} ${NEG}Instalando o Setting, aguarde...${STD}" - fakeroot adb install -r setting.apk - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Setting instalado com sucesso!${STD}" - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro na instalação.${STD}" - fi - fi - fi - pause "Tecle [Enter] para retonar ao menu" ; menu_install_apps -} - -# --- INSTALAR NOVOS APPS - FIM - -# Gravação de tela -gravar_tela(){ - clear - echo -e "${NEG}Gravação de tela da TV - *EXPERIMENTAL*${STD}" - separacao - echo "" - echo -e " ${LAR214}Bem vindo a gravação de Tela da TV, esse${STD}" - echo -e " ${LAR214}recurso é limitado a 3 minutos de gravação,${STD}" - echo -e " ${LAR214}porém após terminar uma gravação outra se${STD}" - echo -e " ${LAR214}inicia automaticamnte em outro arquivo com${STD}" - echo -e " ${LAR214}mesmo nome, alterando apenas o final, por${STD}" - echo -e " ${LAR214}exemplo: gravacao-001.mp4, gravacao-002.mp4.${STD}" - echo "" - echo -e " Para parar a gravação tecle ${NEG}[CTRL + C]${STD}" - echo "" - - # Testa se o diretório já existe, senão cria - CAMINHO="/sdcard/adb\ Recording" - fakeroot adb shell mkdir -p ${CAMINHO} - echo -e " ${NEG}O arquivo será gravado em:${STD}" - echo -e " ${ROS}${CAMINHO}${STD}" - echo "" - echo -e " ${ROX063}Digite um nome para o seu arquivo${STD}" - echo " e tecle [Enter] para começar a gravar:" - echo "" - read REC - for i in {000..999}; do - echo -e " ${BLU}*${STD} ${NEG}Gravando vídeo $REC-${i}.mp4 ...${STD}" - fakeroot adb shell screenrecord --bit-rate 100000000 --size 1280x720 "${CAMINHO}/$REC-${i}.mp4" - if [ "$?" -eq "0" ]; then - echo "" - echo -e " ${GRE}*${STD} ${NEG}Vídeo $REC-${i}.mp4 gravado com sucesso!${STD}" - else - echo "" - echo -e " ${RED}*${STD} ${NEG}Erro ao gravar vídeo. Verifique sua conexão.${STD}" - echo "" - pause "Tecle [Enter] para retornar ao menu Principal." ; menu_principal - fi - done -} - -# --- MENU --- -# Menu principal -menu_principal(){ - clear - option=0 - until [ "$option" = "6" ]; do - echo "" - echo -e " ${CYA}OTMIZAÇÃO TV TCL${STD} - ${YEL}$VER${STD}" - - # Verifica o Status da TV, se está conectada ou não via adb - ping -c 1 $IP >/dev/null 2>&1 - if [ "$?" -ne 0 ]; then - echo -e " ${NEG}Status:${STD} ${RED}Desconectado${STD} ${NEG}via adb${STD}" - else - if [ "$(fakeroot adb connect $IP | cut -f1 -d" " | grep -e connected -e already)" != "" ]; then - echo -e " ${NEG}Status:${STD} ${GRE}Conectado${STD} ${NEG}via adb${STD}" - else - echo -e " ${NEG}Status:${STD} ${RED}Desconectado${STD} ${NEG}via adb.${STD}" - fi - fi - echo "" - echo -e " ${GRY247}Este script possui a finalidade de otimizar${STD}" - echo -e " ${GRY247}o sistema Android TV, removendo e desativando${STD}" - echo -e " ${GRY247}alguns apps e instalando outros.${STD}" - echo "" - echo "" - echo -e " ${YEL}FAÇA UMA DOAÇÃO E AJUDE ESTE PROJETO!${STD}" - echo -e " ${BLU}PIX:${STD} ${ROS}talesam@gmail.com${STD}" - echo "" - echo "" - echo -e " ${BLU}1.${STD} ${RED009}Remover apps lixo${STD}" - echo -e " ${BLU}2.${STD} ${GRY247}Desativar${STD}/${GRE046}Ativar apps${STD}" - echo -e " ${BLU}3.${STD} ${BLU039}Launcher ATV Pro TCL Mod + Widget${STD}" - echo -e " ${BLU}4.${STD} ${BLU039}Launcher GoogleTV Home${STD}" - echo -e " ${BLU}5.${STD} ${GRE046}Instalar novos apps${STD}" - echo -e " ${BLU}6.${STD} ${AMA226}Gravar Tela da TV${STD} ${NEG}*EXPERIMENTAL*${STD}" - echo -e " ${BLU}0.${STD} ${RED}Sair${STD}" - echo "" - read -p " Digite um número e tecle [Enter]:" option - case "$option" in - 1 ) rm_apps ;; - 2 ) menu_ativar_desativar ;; - 3 ) menu_launcher ;; - 4 ) menu_googletv ;; - 5 ) menu_install_apps ;; - 6 ) gravar_tela ;; - 0 ) exit ; fakeroot adb disconnect $IP >/dev/null ;; - * ) clear; echo -e " ${NEG}Por favor escolha${STD} ${ROS}1${STD}${NEG},${STD} ${ROS}2${STD}${NEG},${STD} ${ROS}3${STD}${NEG},${STD} ${ROS}4${STD}${NEG},${STD} ${ROS}5${STD},${STD} ${ROS}6${STD} ${NEG}ou${STD} ${ROS}0 para Sair${STD}"; - esac - done -} - -# Menu ativar/desativar apps -menu_ativar_desativar(){ - clear - option=0 - until [ "$option" = "3" ]; do - separacao - echo -e " ${ROX027}Ativar e Desativar Apps${STD}" - separacao - echo "" - echo -e " ${BLU}1.${STD} ${GRY247}Desativar apps${STD}" - echo -e " ${BLU}2.${STD} ${GRE046}Ativar apps${STD}" - echo -e " ${BLU}0.${STD} ${ROX063}Retornar ao Menu Principal${STD}" - echo "" - read -p " Digite um número:" option - case $option in - 1 ) desativar ;; - 2 ) ativar ;; - 0 ) menu_principal ;; - * ) clear; echo -e " ${NEG}Por favor escolha${STD} ${ROS}1${STD}${NEG},${STD} ${ROS}2${STD}${NEG},${STD} ${NEG}ou${STD} ${ROS}0${STD}${NEG}"; - esac - done -} - -# Menu Instalar e ativar/desativar Launcher ATV PRO MOD -menu_launcher(){ - clear - option=0 - until [ "$option" = "3" ]; do - separacao - echo -e " ${ROX027}Instalar e Ativar Launcher ATV PRO MOD${STD}" - separacao - echo "" - echo -e " ${BLU}1.${STD} ${GRE046}Instalar e ativar Launcher${STD}" - echo -e " ${BLU}2.${STD} ${GRY247}Desativar Launcher${STD}" - echo -e " ${BLU}0.${STD} ${ROX063}Retornar ao Menu Principal${STD}" - echo "" - read -p " Digite um número:" option - case $option in - 1 ) install_launcher ;; - 2 ) desativar_launcher ;; - 0 ) menu_principal ;; - * ) clear; echo -e " ${NEG}Por favor escolha${STD} ${ROS}1${STD}${NEG},${STD} ${ROS}2${STD}${NEG},${STD} ${NEG}ou${STD} ${ROS}0${STD}${NEG}"; - esac - done -} - -# Menu Instalar e ativar/desativar Launcher GoogleTV Home -menu_googletv(){ - clear - option=0 - until [ "$option" = "3" ]; do - separacao - echo -e " ${ROX027}Instalar a Launcher GoogleTV Home${STD}" - separacao - echo "" - echo -e " ${BLU}1.${STD} ${GRE046}Instalar/atualizar a GoogleTV Home${STD}" - echo -e " ${BLU}2.${STD} ${GRY247}Desativar GoogleTV Home${STD}" - echo -e " ${BLU}0.${STD} ${ROX063}Retornar ao Menu Principal${STD}" - echo "" - read -p " Digite um número:" option - case $option in - 1 ) install_googletv ;; - 2 ) desativar_googletv ;; - 0 ) menu_principal ;; - * ) clear; echo -e " ${NEG}Por favor escolha${STD} ${ROS}1${STD}${NEG},${STD} ${ROS}2${STD}${NEG},${STD} ${NEG}ou${STD} ${ROS}0${STD}${NEG}"; - esac - done -} - -# Menu instalar novos apps -menu_install_apps(){ - clear - option=0 - until [ "$option" = "10" ]; do - separacao - echo -e " ${ROX027}Instalar Novos Apps${STD}" - separacao - echo "" - echo -e " ${BLU}1.${STD} Aptoide TV - v5.1.2" - echo -e " ${BLU}2.${STD} Deezer MOD - v3.0" - echo -e " ${BLU}3.${STD} Spotify MOD - v1.12.0" - echo -e " ${BLU}4.${STD} TV Bro - v1.6.1" - echo -e " ${BLU}5.${STD} Smart Youtube Next - v12.50" - echo -e " ${BLU}6.${STD} Send Files - v1.2.2" - echo -e " ${BLU}7.${STD} Youcine - v1.1.2" - echo -e " ${BLU}8.${STD} X-Plore - v4.27.65" - echo -e " ${BLU}9.${STD} Setting (Trocar Launcher)" - echo -e " ${BLU}0.${STD} ${ROX063}Retornar ao Menu Principal${STD}" - echo "" - read -p " Digite um número:" option - case $option in - 1 ) install_aptoidetv ;; - 2 ) install_deezer ;; - 3 ) install_spotify ;; - 4 ) install_tvbro ;; - 5 ) install_stubenext ;; - 6 ) install_sendfiles ;; - 7 ) install_youcine ;; - 8 ) install_xplore ;; - 9 ) install_setting ;; - 0 ) menu_principal ;; - * ) clear; echo -e " ${NEG}Por favor escolha${STD} ${ROS}1${STD}${NEG},${STD} ${ROS}2${STD}${NEG},${STD} ${ROS}3${STD}${NEG},${STD} ${ROS}4${STD}${NEG},${STD} ${ROS}5${STD}${NEG},${STD} ${ROS}6${STD}${NEG},${STD} ${ROS}7${STD}${NEG},${STD} ${ROS}8${STD}${NEG},${STD} ${ROS}9${STD}${NEG},${STD} ${NEG}ou${STD} ${ROS}0 para sair${STD}"; - esac - done -} - -# Cria um diretório temporário e joga todos arquivos lá dentro. Remove sempre ao entrar no script -rm -rf .tmp && mkdir .tmp && cd .tmp - -# Verifica a versão do app -versao - -# Chama o script inicial -termux