O primeiro repositório de informações, guias e novidades sobre um dos celulares Android mais originais que existem

quinta-feira, 26 de agosto de 2010

Favoritos

Uma pequena lista das aplicações que não penso em tirar do Mini:

  • Skyfire - browser alternativo, com suporte a videos em Flash.
  • Ultimate Stopwatch - Cronometro, bonito visual.
  • Wifi Analyzer - informações úteis para quem está instalando rede wireless em casa.
  • Shazam - identifica qual a música que está tocando, só de ouvir alguns segundos dela.
  • Phonalyzr - gera vários gráficos de uso do telefone,
  • APNdroid - bloqueia uso da conexão de dados (3G/2G), evita sustos no fim do mês ,
  • Taxi Brasil - lista telefônica dos taxistas e pontos de taxi mais próximos de onde você está,
  • Operadora DDD - troca operadora de DDD sem precisar editar os números na agenda.
  • Mapdroyd - mapas e GPS sem usar o plano de dados
  • Wikidroyd - cópia da wikipedia sem usar o plano de dados
  • Better Terminal - acesso ao linux dentro do Mini
  • Picsay - edita fotos para enviar para seus amigos
  • Photoshop - edita fotos e publica na internet.
  • Apps Organizer - lista e agrupa as aplicações instaladas.
  • Tangram Pro - quebra-cabeças tradicional chinês
  • The Cube - cubo mágico
  • Marbles Solitaire - resta-um
  • Documents to Go - abre e edita arquivos do Word, Excel, Powerpoint e Acrobat. (app paga)

segunda-feira, 23 de agosto de 2010

Master Reset & Master Clear

Talvez você já tenha notado que a medida em que vai instalando mais e mais aplicações e arquivos/filmes/documentos/músicas no Mini ele passa a levar mais e mais tempo para ligar.

Isso ocorre porque ao reiniciar, o Mini varre toda a lista de aplicações e confere se elas estão intactas. Quanto mais aplicações estiverem instaladas, mais isso demora.

Da mesma forma, o sdcard inteiro é vasculhado a procura de arquivos de dados suportados pelo Mini para a geração de uma lista para cada tipo de arquivo. É consultando essa lista que as aplicações encontram seus arquivos, qualquer que seja o diretório em que eles estejam. Quanto mais arquivos estiverem no sdcard, mais tempo se leva para descobrir o tipo de todos eles.

Para reduzir o tempo que leva religar o Mini, portanto, uma saida é desinstalar as aplicações que não funcionam direito, as que você não usa, não quer ou não precisa.

Já mencionei que o Mini guarda os arquivos de aplicações em seu sdcard. Mas se os documentos do usuário também ficam no sdcard, então para que é usada a memória interna ? Lá na memória interna, no diretório /data são guardadas as configurações, listas de contatos, compromissos, emails, mensagens sms, recordes de jogos, etc.

Acontece que ao desinstalar uma aplicação, esses arquivos de configuração não são removidos. Eles são mantidos para o caso de você reinstalar a aplicação algum dia. Se a aplicação nunca for reinstalada, os arquivos ficam ali ocupando espaço para sempre. E em alguns casos isso não é tão pouco espaço, ainda mais sendo na escassa memória interna: o /data inteiro tem no máximo 48MB de espaço.

Há dois procedimentos disponiveis para o usuário tentar apagar esses arquivos. Em português, são as opções do menu de configurações Limpar Master e Restaurar Master, respectivamente Master Clear e Master Reset.

Há uma diferença sútil entre eles:
  • O Master Reset/Restaurar Master remove apenas os arquivos de configuração, sem tocar nas aplicações, mensagens SMS e contatos.
  • O Master Clear/Limpar Master realmente apaga todas as informações adicionadas pelo usuário, efetivamente deixando o telefone como era quando foi ligado pela primeira vez.
Nenhum dos dois métodos apaga os arquivos do usuário no sdcard.

Se você quer recuperar o espaço perdido no /data, você precisa de um Master Clear.

Recomendo fazer um backup imediatamente antes de qualquer dos dois procedimentos. Os arquivos de backup ficam no sdcard e não serão afetados.

A senha padrão é 1234 (mesmo se você trocou a senha, ela vai voltar a ser 1234 após o procedimento).

domingo, 22 de agosto de 2010

USB, MTP x UMS


Diferente de outros Androides, o Mini usa o sdcard para armazenar os arquivos de todas as aplicações instaladas. Essa opção de projeto tem seus prós e contras:

  • A Borqs fez a mudança as pressas e esqueceu de que ao conectar o telefone com a USB em modo UMS (imitando um pen-drive) os arquivos ficam indisponiveis para o sistema e por isso mesmo as aplicações são desinstaladas/destruídas. Bug.
  • Aumenta a dependência do sdcard, ele não pode mais ser trocado a vontade com o telefone ligado, como se fosse um disquete do usuário sem maiores consequências para o sistema.
  • Economiza a memória interna do telefone.
  • Simplifica o projeto do hardware, pois dispensa a instalação de memória interna adicional, reduzindo custos, tamanho, consumo de energia e vulnerabilidades físicas do equipamento.
Mesmo com uma pequena memória interna, com isso é possivel instalar ao mesmo tempo uma quantidade maior de aplicações no Mini do que na maioria dos outros telefones com Android, graças ao vasto espaço disponivel no sdcard. Se ainda assim precisar de mais espaço, é só comprar um sdcard maior, custa bem barato encomendando pela internet.

Se o preço para poder instalar mais aplicações simultaneamente é não poder usar o Mini como Pen Drive em modo UMS sem destruir as aplicações, então na minha opinião dessa vez a Dell e a Borqs fizeram a escolha certa. De fato, minha dúvida é porque eles não colocaram logo TODOS os dados e configurações do usuário no sdcard. Teria evitado uma série de problemas e talvez seja até mais fácil de implementar.

Nas versões mais novas do Android, 2.1/2.2, o Google se ligou nisso e usou essa idéia de instalar aplicações no sdcard. Nessas versões, o usuário pode optar por mover (!) algumas (!) aplicações para o sdcard. E as aplicações tem que ser preparadas para isso pelo desenvolvedor.

Há ainda o modo MTP (como máquina fotográfica) que pode ser usado para transferir arquivos pela USB sem destruir as aplicações.

Recentemente precisei uma cópia de um documento que eu não tinha em mãos. Ir em casa buscar levaria muito tempo e eu guardo uma cópia digitalizada dele em meu servidor pessoal. Posso acessá-lo via internet. Na loja de cópias mais próxima - o popular "xerox" - eu poderia imprimir uma cópia.

Usando o acesso 3G, baixei o arquivo para o Mini de forma rápida e segura. Mas eu precisava transferir o arquivo do sdcard para o computador da loja xerox. Bluetooth e wi-fi não eram opções disponíveis lá. Se eu usasse o computador deles para baixar o arquivo, estaria expondo não apenas aquele documento, mas também minha senha e outros arquivos importantes que guardo em meu servidor. Eu tinha o cabo USB para conectar o Mini, então a escolha ideal era usar o modo MTP.

Esses computadores em ambientes promíscuos são frequentemente contaminados com vírus e outros bichos. Expondo o Mini eu não tinha praticamente nada a temer, o único arquivo importante no meu telefone era o que eu queria imprimir e nenhum vírus de pc poderia causar danos às aplicações do Android, que eu também tenho copiadas em lugar seguro.

Mas fui parar na única xerox zelosa que já vi... o dono recém tinha instalado não um, mas dois programas antivirus no mesmo computador, e ambos em modo paranóico. Ao plugar o cabo USB, selecionei o modo MTP para transferir os arquivos. Ironicamente, um dos antivirus negou acesso ao Mini alegando que não estava preparado para proteger o micro de possiveis vírus em dispositivos MTP.

Minha única opção era o modo UMS.

Eu não queria ter que reinstalar 300 aplicações que tenho. Para evitar isso eu poderia rapidamente usar o programa de backup que vem no Mini. Esse programa cria uma cópia adicional da instalação das aplicações, configurações e seus dados, guardando tudo no sdcard.

Em seguida, liguei o Mini em modo UMS, transferi o arquivo e o imprimi.

As aplicações foram destruídas, como previsto. Mas restaurando o backup delas em seguida eu poderia sair da loja com o Mini funcionando exatamente como estava quando entrei.

A dica é do colega Alpha, que continua fazendo falta.

sábado, 21 de agosto de 2010

Números especiais


Experimente discar para::

  • *#06# (Display IMEI)
  • **04* (Change UPIN)
  • **042* (Change PIN2)
  • **05* (Unblock PIN with UPUK code)
  • **052* (Unblock PIN2 with UPUK code)

quarta-feira, 18 de agosto de 2010

Usando o SDK

Há quem pense que SDK é coisa apenas para programadores. No caso do Androide, o Software Develpment Kit disponibilizado pelo Google é muito mais do que isso. É uma ferramenta indispensável para quem quer dominar o sistema e modificá-lo.

Para começar, baixe os arquivos de instalação para sistemas rodando Windows, Mac OS X ou Linux disponiveis em http://developer.android.com/sdk/index.html. Se você é desenvolvedor, baixe também o plugin para o Eclipse e o NDK no mesmo endereço.

Uma grande atração do SDK do Android é o emulador que vem com ele. Muito antes dos primeiros telefones com Android serem vendidos, já era possivel testar as aplicações dentro do computador onde foram desenvolvidas. Mais do que isso, com o emulador é possivel pegar imagens de firmware de telefones e testar elas inteiras antes de passar para o hardware real, com direito a rodar TODAS as aplicações disponiveis naquele firmware. Basta copiar o arquivo system.img para dentro do diretório de um telefone virtual criado com o emulador.

Outra ferramenta importante é o adb. Lembra da lista de modos USB do Mini que aparece ao plugar o cabo de dados? O último deles na lista é o modo ADB, que serve justamente para usar em conjunto com o adb do SDK. Esse comando permite varias tarefas úteis para testar aplicações, verificar os detalhes internos do Mini e até transferir arquivos.

O comando 'adb shell' permite que você acesse o Mini como o verdadeiro computador que ele é. Quem conhece o sistema Linux vai imediatamente reconhecer a maioria dos arquivos e diretórios disponiveis.

Os arquivos do cartão SD, que são os visiveis para o usuário pelo Gerenciador de Arquivos do Mini ou via USB em modo MTP ou UMS, ficam todos dentro do diretório /sdcard. Os diretórios /system e /opl contém os arquivos de sistema, onde está o Androide, propriamente dito.

Você não vai encontrar o kernel do Linux, ele não é visto como arquivo no sistema, mas está em uma das "partições" da memória interna, as chamadas MTD e é carregado por um bootloader especial para a cpu ARM, o blob.

Na maioria dos Androides, os arquivos apk instalados ficam na memória interna do telefone, em um diretório /data/app. Isso limita seriamente a quantidade de aplicações que podem ser instaladas, pois a memória interna é limitada. No Mini, as aplicações são instaladas dentro do /sdcard/app, e justamente por isso existe aquele bug que destrói as aplicações instaladas ao se plugar o cabo USB em modo UMS.

O diretório /data/data/ não pode ser visualizado diretamente, mas contém os dados das aplicações instaladas, todos os contatos da agenda, eventos do calendário, configurações do sistema, preferencias do usuário, emails, mensagens, etc. Por isso, não é desejável manter ou receber emails com arquivos em anexo grandes , eles podem esgotar o espaço disponivel na memória interna. O sistema também não remove arquivos de aplicações desinstaladas, eles ficam lá ocupando espaço para sempre. A única forma que o usuário normal tem para remover esses arquivos perdidos é com o Master Reset, no menu de configurações. Faça um backup do sistema antes disso e restaure depois.

O diretório /local é critico para o sistema, lá estão armazenados logs que descrevem o estado do telefone e também os dados lidos do chip SIM do GSM ou WCDMA.

Os logs podem ser visualizados com o comando 'adb logcat'. Incrivel a quantidade de operações que acontecem no telefone a cada minuto.

Arquivos podem ser transferidos usando os comandos 'adb pull' e 'adb push', para ler e escrever arquivos respectivamente.

Se você quer tirar o máximo proveito do Mini, e modificar as entranhas do firmware, esse é o caminho. Se ainda não sabe, considere aprender um pouco mais sobre linux. Não é nada dificil e as recompensas são realmente grandes para os que se aventurarem.

---

Em tempo, a Borqs disponibiliza uma versão própria do SDK com as mesmas ferramentas e uma imagem de seu ophone em http://www.ophonesdn.com/ O site é quase todo em Chinês, mas não é dificil encontrar a página de registro e download do SDK.

---

Para sistemas windows, pode ser necessário instalar um driver para o micro reconhecer o Mini em modo ADB. Se tiver dificuldade com isso, comente aqui no blog que eu pesquiso uma forma de ajudar.

terça-feira, 17 de agosto de 2010

Operações Cirúrgicas em APK



Há uma esperança para você que já se frustou com alguma aplicação que ocupa a tela toda com os botôes, como essa aqui ao lado.

Como relatado em posts anteriores, isso ocorre devido a código faltando em um objeto do framework. Em linguagem mais simples, é bug do firmware. Mas pode ser contornado mudando um simples detalhe na aplicação, simples e fácil mesmo para quem não sabe programar em Java.

O procedimento é muito simples quando se tem os fontes da aplicação, como no caso do Aptoide. Mas e quando for uma aplicação comercial e os fontes não estão disponiveis?

Os arquivos apk são realmente arquivos zip renomeados, pode-se extrair seus conteúdos facilmente usando qualquer descompactador de zip. Os arquivos que precisam ser modificados ficam no diretório res/layout dentro do zip.

Mas há alguns detalhes. Para começar, ao compilar a aplicação para o Android, o conteúdo desses arquivos xml é convertido para um formato mais rápido para o sistema trabalhar e dificil de editar.

A ferramenta que resolve isso é o apktool, Esqueça o descompactador, use o apktool que também já converte os arquivos de volta para o formato texto/xml. No exemplo abaixo, estamos descompactando o arquivo tabhost-bad.apk:

> apktool decode -s tabhost-bad.apk
I: Copying raw classes.dex file...
I: Loading resource table...
I: Decoding resources...
I: Loading resource table from file: tabhost-bad.apk
I: Copying assets and libs...
> cd tabhost-bad
> cd res
> cd layout

Procure por arquivos xml que contenham definições de TabWidget, em linhas de texto semelhantes a abaixo:

<tabwidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" />

Substitua "wrap_content" por um tamanho fixo, por exemplo "65px".

<tabwidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="65px" />

Pronto, agora é só gerar o novo apk, que nesse exemplo vamos chamar de tabhost-fixed.apk:

> cd ..
> cd ..
> cd ..
> apktool build tabhost-bad tabhost-fixed.apk
I: Copying classes.dex file...
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...

Um último detalhe. Os arquivos apk são sempre assinados, contém a assinatura digital de seus desenvolvedores. Essa assinatura é invalidada e não pode ser mantida após a alteração dos arquivos. Sem ter a chave secreta usada pelo desenvolvedor original da aplicação, não podemos forjar a assinatura. Felizmente, isso não é necessário na maioria dos casos. Basta usar qualquer chave para criar uma nova assinatura. As aplicações não costumam verificar a assinatura e o instalador de aplicações do Android apenas exige uma assinatura válida qualquer, não importa a origem.




A nova assinatura pode ser feita com a ferramenta criada por Dave Da illest. Basta colocar os arquivos no mesmo diretório e executar o sign.bat.

Então é só instalar o novo apk e testar.

sábado, 14 de agosto de 2010

O bom, o ruim e o feio

Longo tempo sem posts, nosso amigo alpha em "férias" involuntárias está fazendo falta.

Quando o Google anunciou o Android, telefones baseados em Linux não eram mais novidade. Mesmo assim, a nova plataforma causou impacto e está revolucionando a indústria. O motivo é a proposta da portabilidade, o santo graal dos desenvolvedores de aplicação. Por muito tempo se apostou no Java para isso. Mas quem já testou aplicações java em diversos equipamentos sabe que a usabilidade fica prejudicada conforme os recursos disponiveis.

O Google tenta resolver isso no Android estabelecendo uma série de requisitos para que os equipamentos sejam compativeis com a plataforma. Passando o tempo, com o amadurecimento da plataforma, os requisitos vão se tornando mais flexiveis e o grande desafio será evitar a fragmentação.

Testando centenas de aplicações no Mini ou em outros Androides, algumas não são compativeis, outras são compativeis mas não usam a tela toda pois foram feitas para telefones com tamanhos de tela especificos e não sabem como se comportar em telefones com formatos diferentes.

BOM:

Aplicações mais elaboradas conseguem um bonito visual e funcionamento em qualquer telefone. É o caso do Beautiful Widgets, frequentemente encontrado naqueles blogs onde o pessoal posta screenshots de seus Androides. Essa aplicação traz um conjunto de widgets que funcionam muito bem no Mini, mas dentre eles o que chama mais a atenção é o Beautiful Home, que combina um relógio com previsão do tempo e geolocalização. Tocando com o dedo sobre a previsão do tempo ele dá mais detalhes sobre as condições do tempo e a previsão para os próximos dias, incluindo uma animação gráfica de qualidade excelente. Pode-se associar aplicações que serão disparadas ao tocar o relógio ou a data. Tudo altamente configurável, com direito a temas que podem ser instalados usando a própria aplicação.

Se você, como eu, tem dificuldade de lembrar o número de seu celular, pois nunca liga para si mesmo, o segundo widget desse screenshot pode ser útil. Chamado What's my Number, esse widget faz apenas isso, exibe o número do seu telefone em local de fácil acesso.

Mais sofisticado é o My Location Widget, que ao ser tocado obtém a localização atual usando o GPS e com base nas coordenadas acessa um banco de dados de localidades para exibir o endereço onde você está: nome da rua e número aproximado da casa ou prédio.

Falando em GPS, outra aplicação de mapas que funciona bem no Mini e tem bom visual é o gvSIG Mini Maps, que permite usar mapas de diversas origens, como Google, Yahoo, Microsoft e ainda tem integração com tweeter.

RUIM:

Muitas aplicações são incompativeis com o Mini por serem: 1) mais antigas do que o Android 1.5 que vem no Mini; 2) feitas usando recursos de versões mais recentes do Android 1.6, 2.0, 2.1 ou 2.2; 3) feitas para funcionar apenas em algum telefone específico; 4) feitas para usar algum recurso de hardware não disponivel no Mini, como um teclado físico, um trackball ou um magnetometro.

Mas o ruim mesmo é que dentre as que são compativeis, há aquelas que não podem ser usadas por algum bug do firmware do Mini. Já mencionamos o Aptoide e o Apktor recentemente, são duas aplicações que usam um objeto Java do Androide chamado TabHost, com um parametro wrap_content. Esse parametro diz para o sistema calcular o tamanho necessário para o texto e usar apenas esse espaço na tela para os botões ou tabs. Mas o Mini aloca a tela inteira para os botões e não deixa espaço para mais nada. Resultado: aplicações não usáveis por um motivo bobo.

Da mesma forma, o Barcode Scanner não funciona no Mini por usar um recurso do Androide que permite visualizar a imagem ao vivo da camera e extrair frames eventualmente para serem processados. O Mini permite visualizar a imagem ao vivo, no chamado Preview Mode, mas não tem o código necessário para extrair imagens enquanto isso.

Há esperança de conseguir corrigir isso usando updates de firmware, se um dia estiverem disponiveis, adicionando camadas Java ou modificando os apks para eles saberem o espaço que podem ocupar. Vamos continuar procurando resolver isso.

Para aplicações cujos fontes estão disponiveis, pode-se tentar modificar o programa diretamente, como fiz com o Aptoide. No caso do Barcode Scanner, é preciso modificar para ele não ficar focando o tempo todo a imagem e "tirar uma foto" quando o botão da camera for pressionado. Essa modificação é relativamente simples, mas por motivos pessoais ainda não consegui me dedicar para fazer ela, Aguardem.

FEIO:

Feio mesmo são as aplicações cujos desenvolvedores não tiveram acesso a telefones de formatos diferentes ou que não foram preparadas para isso. Algumas chegam a ser usáveis, mas fica aquele visual feio, desorganizado. O menu de configurações do AndNav2 se encaixa nessa categoria.

Também é feio o visual da interface que a Borqs customizou, como boa empresa chinesa vermelha. Já encontramos de quais arquivos no firmware vem essas cores, agora temos que ver como fazer para substitui-las.

terça-feira, 3 de agosto de 2010

Arquivos apk, onde estão vocês?

Em outros androides, o único meio de instalar aplicações é usando a loja online de aplicações do Google, o Market. Muito conveniente para encontrar aplicações, mas não está disponivel no Mini 3 e ainda levanta queixas de privacidade.

Em vez disso, no Mini 3 temos vários métodos para instalar aplicações. Pode-se:
1) simplesmente usar o navegador do Mini 3 e clicar sobre os arquivos apk na web.
2) obter os arquivos apk em um computador e transferir para o Mini usando bluetooth
3) enviar os arquivos para o Mini usando o cabo USB e modo MTP (evite usar o modo UMS, ele destrói as aplicações instaladas pelo usuário) e depois clicar sobre os apk usando o gerenciador de arquivos do Mini.

Já comentamos sobre as lojas alternativas, como o Slideme.

Vários autores publicam suas aplicações em seus próprios sites. Por isso mesmo, o meio mais simples para encontrar aplicações é usar o próprio Google: procure por apk e o nome da aplicação ou a função dela.

Uma forma de busca mais avançada é usando esse link, também no Google.

Existem ainda algumas aplicações especializadas que criam repositórios populares. A mais famosa dessas é o Aptoide, que deu origem ao Apktor. Infelizmente, as duas aplicações usam um componente que não é exibido corretamente no Mini. Por isso, escrevi um patch e recompilei o pacote do Aptoide para o Mini.


O passo seguinte é procurar por repositórios para essas aplicações... ainda bem que existe o Google para isso. Encontrei essa lista aqui.