def listarapps( self ): # Lista todos aplicativos do dispositivo no formato App/Atividade Principal/ Nome do pacote apps = droid.getLaunchableApplications( ) # Obtém a lista das ativiades e nome dos apps # Como não estamos trabalhando diretamente com Java não é possivel usar "getpackagemanager" para o obeter o nome dos pacotes, por isso é preciso muito mais código para conseguir um resultado semelhante listaapps = [] for i in apps[1]: # Ciclo que organiza as coisas cl = Classificador() nomeapp = cl.normalizar( i ) # O nome do app deve ficar em minúsculo para agilizar comparações futuramente atividade = apps[1][i] listaapps.append([nomeapp, atividade]) self.listaapps = sorted( listaapps ) # A variável global recebe a local só que organizada em ordem alfabética lapps = self.listaapps lpacotes = self.pacotes for j in lapps: # Ciclo para adicionar os pacotes que foram listados no instaciamento da classe for i in lpacotes: if (i in j[1]): self.listaapps[self.listaapps.index(j)].append( i ) # O app correspondente recebe o nome do pacote agora lpacotes.pop( lpacotes.index(i) ) # Retira o pacote para não acabar sendo associado a outro app self.listaapps = lapps # Adicionando á variavél global # A lista a seguir é o conjunto de nomes de pacotes que não puderam ser identificados pelo código e vão ter que ser adicionados manualmente listanegra = [ ["com.google.android.apps.youtube.creator", "yt studio"], ["com.socialnmobile.dictapps.notepad.color.note", "colornote"], ["com.cyberlink.powerdirector.DRA140225_01", "powerdirector"], ["com.estrongs.android.pop.pro", "es file explorer pro"], ["com.iudesk.android.photo.editor", "editor de fotos"], ["com.zeptolab.thieves.google", "king of thieves"], ["com.touchtype.swiftkey", "teclado swiftKey"], ["com.google.android.videos", "play filmes"], ["com.google.android.music", "play música"], ["com.google.android.youtube", "youtube"], ["com.google.android.apps.maps", "maps"], ["pl.solidexplorer2", "solid explorer"] ] for i in listanegra: # Vamos adicionar o nome dos pacotes da lista negra a lista global de apps for j in self.listaapps: if i[1] == j[ 0]: # Se tiver o mesmo nome, adicionar o nome do pacote a lista self.listaapps[self.listaapps.index(j)].append(i[0]) return
def aprender1(self, entrada ): # Responsável apenas por cadastrar uma saida para entrada v = Voz() cl = Classificador() v.fale("Quer Cadastrar uma agora?") saida = (v.escute()) saida = cl.normalizar(saida) sim = [ "sim", "claro", "com certeza", "óbvio que sim", "por favor", "correto", "certo", "isso mesmo", "pode pá" ] for i in sim: if (saida in i): while ( True ): #Looping infinito que só é encerrado quando uma entrada é gravada v.fale("Qual a resposta?") saida = (v.escute()) v.fale("Então a sua entrada é:, " + entrada) v.fale("E a saída é:, " + saida) v.fale("Correto?") resp = (v.escute()) for i in sim: if (resp in i): v.fale("Ok, gravando resposta") entrada = cl.normalizar( entrada ) # Normalizando a entrada, por enquanto isso apenas deixa tudo em minúsculo saida = cl.normalizar(saida) arq = Arquivo() arq.gravar("/BD/txt/i.txt", entrada) arq.gravar("/BD/txt/o.txt", saida) return # Mas caso o usuário diga qualquer outra coisa, reiniciar... v.fale("Você pode repitir por favor?") v.fale("Qual é a pergunta?") entrada = (v.escute()) v.fale("Ok, fica para próxima") return # Saia caso o usuário não queria cadastrar uma resposta
def interagir(self, entrada, log=[] ): # Recebe uma string, busca no txt e se houver uma resposta devolve cl=Classificador() entrada=cl.normalizar(entrada) # Normalizando a entrada, por enquanto isso apenas deixa tudo em minúsculo resposta = "Infelizmente não tenho nenhuma resposta para isso" if("pare" == entrada or "sair" in entrada): exit() # Força a parada do app logo de cara se necessário # É verificado se a reposta é idêntica as últimas e qual ação tomar a partir dali através do módulo impaciência. paciencia=Paciencia() resp=paciencia.ent_rep(self.entradasrecentes,entrada) if(resp[1]==True): # Se a paciência já passou do limite self.entradasrecentes=[] return resp # Reposta já está no formatado de trabalho da classe principal self.entradasrecentes.append(entrada) # Deixa mais dinâmico no futuro essa parte sobre repetir a última coisa falada repita=["repita", "repete", "o que você disse", "repete por favor"] for r in repita: if(r==entrada and len(log)!=0): # Se o usuário quiser saber sua última resposta e ela existir return log[len(log)-1][1],True # É feito uma busca rápida por ações numop=cl.idacao(entrada) if(numop[0]!=0): # Se existir uma ação para ser executada: resp=cl.execacao(entrada,numop) if(resp[0]!=0): return resp,True # Se chegar até aqui sem uma reposta, é hora de buscar no banco arq=Arquivo() if((arq.lertudo("/BD/txt/i.txt")[1]==False) or (arq.lertudo("/BD/txt/o.txt")[1]==False)): # Verifica existência do arquivo arq.criar("/BD/txt/i.txt")# Cria se não existir arq.criar("/BD/txt/o.txt") inputs=arq.lertudo("/BD/txt/i.txt") # lista de possíveis entradas outputs=arq.lertudo("/BD/txt/o.txt") # lista de possíveis saídas n=0 # Setando for i in inputs: # Busca nos arquivos if(entrada+"\n"==i): # O "\n" é para igualar as quebras linha do txt resposta=outputs[n] return resposta,True n+=1 # Se a resposta não foi econtrada até agora, vamos tentar buscar na internet cb = BuscaWeb() resultado = cb.start(entrada) if(resultado[1]): return resultado # Reposta já está no formatado de trabalho da classe principal # Caso nenhuma resposta tenha sido atribuída return resposta,False