quinta-feira, 13 de junho de 2013

Quadricóptero controlado pela mente

Quadricóptero controlado pela mente


Controlar quadricópteros não é algo simples de fazer, agora imagine controla-los com a mente.
Para simplificar isto um grupo de pesquisadores da Universidade de Minnesota criou um modo bem mais intuitivo para controlar o quadricóptero junto com receptores neurais. Eles pendem ao usuário pense em mexer seus punhos de forma a controlar o lado para o qual ele quer que o quadricóptero voe.
Eles pensam em utilizar isto para pessoas que tem deficiências físicas poderem controlar suas cadeiras de rodas.

Para mais informações clique aqui.


terça-feira, 30 de abril de 2013

Dica de como resolver o problema com Android 4.0 no Galaxy S

Dica de como resolver o problema com Android 4.0 no Galaxy S



O Problema

Está tendo perda de sinal na instalação do Android 4.0 no Galaxy S, sempre que instalo uma nova versão do Android 4.0 no meu aparelho ele tem o pegar o sinal da operadora certo mais com umas duas semanas para de ter sinal e não funciona mais nem se resinstalar.  


Material utilizado


Dois tutoriais muito bons e deu 100% certo. Só que estou tendo um problema na instalação do Android 4.0 e superiores no meu celular, depois da instalação o ICS e o Jelly Bean funcionam bem por um tempo aproximado de umas duas semanas ou menos e depois do nada perde o sinal da operadora e mesmo que faça a reinstalação do celular desde a versão do Froyo, quando chega à versão que parou de funcionar a mesma não volta ter sinal da operadora. Vejo o IME e está do mesmo jeito que estava quando funcionava. Se voltar para a Froyo ou Gingerbread o sinal fica normal, e se instalar outra ICS ou Jelly Bean diferente da que está dando problema funciona novamente.
Versões do Android 4.0 que testei e todas elas funcionaram por um tempo e depois pararam de pegar o sinal da operadora.

  • SLIMICS-AndroidDicasBrasil 25042012.zip,
  • UNDERGROUND-II-B.zip e
  • cm10_addons_devil-V8b.zip 

A nova Instalação que estou testando (Cyanogenmod)


A versão atual que estou usando é a cm-10.1-20130423-NIGHTLY-galaxysbmtd.zip tirada do próprio site do Cyanogenmod e está funcionando tudo direito, foi instalada em 23/04/2013 e vou vê quanto tempo fica funcionando e se quebrar novamente vou testar a instalação da versão do dia do NIGHTLY.


A atualização da versão sempre eu faço partindo da Gingerbread da seguinte maneira:


Instalação do Gingerbread no galaxy s gt-i9000b

  • Fazer backup;
  • Remover o cartão SIM e o cartão SD externo;
  • Ligar o aparelho em Modo Download e plugue o USB;
  • Abrir o Odin como administrador;
  • Quando o Odin reconhecer o aparelho;
  • Clique PIT e selecione o arquivo PIT para GT-I9000B (s1_odin_20100512.pit);
  • Clique PDA e selecione o arquivo da ROM GingerBread JW4 Recovery (JW4_Recovery.tar);
  • Clique em Start;
  • Espere o reinicio do aparelho;


Habilitar o root no aparelho

  • Ligue o aparelho em Modo Recovery;
  • Acesse o menu advanced SpeedMod ULK features;
  • Acesse o menu ROOT/Install Superuser;
  • Execute Simple:install busybox+su;
  • Acesse o menu Go Back duas vezes;
  • Execute reboot system now.

Instalação CyanogenMod 10.1


  • Ligue o aparelho em Modo Recovery v2.5.0.1;
  • Execute wipe data/factory reset;
  • Acesse install zip from sdcard -> choose zip from sdcard  -> ultimate_kernel_cleaning_script_v4_by_lippol94.zip;
  • Acesse install zip from sdcard -> choose zip from sdcard -> cm-10.1-20130423-NIGHTLY-galaxysbmtd.zip;
  • Dará uma mensagem: (status 0) installation aborted. Tudo bem prossiga.
  • Acesse Go Back;
  • Execute reboot system now.
  • O aparelho irá iniciar no CWM-bases Recovery v6.0.2.7.
  • Execute novamente os seguintes passos:
  • Acesse install zip from sdcard -> choose zip from sdcard -> cm-10.1-20130423-NIGHTLY-galaxysbmtd.zip;
  • Acesse install zip from sdcard -> choose zip from sdcard -> BVJJPD_ICS.CM.I9000.zip;
  • Acesse install zip from sdcard -> choose zip from sdcard -> Host e GPS.zip;
  • Acesse install zip from sdcard -> choose zip from sdcard -> gapps-jb-20130301-signed.zip;

Atualização do CyanogenMod

  • Ligue o aparelho em Modo Recovery v6.0.2.7;
  • Acesse install zip from sdcard -> choose zip from sdcard -> cm-10.1-????????-NIGHTLY-galaxysbmtd.zip;
  • Acesse install zip from sdcard -> choose zip from sdcard -> BVJJPD_ICS.CM.I9000.zip;
  • Acesse install zip from sdcard -> choose zip from sdcard -> Host e GPS.zip;
  • Acesse install zip from sdcard -> choose zip from sdcard -> gapps-jb-20130301-signed.zip;


Se acontecer o erro novamente atualizo o Post com os procedimentos que utilizarei.



sexta-feira, 19 de abril de 2013

Como construir um rádio de galena


Como construir um rádio de galena

O que é rádio de galena?


O rádio de galena é um circuito simples para uma montagem de um rádio que não necessita de pilhas ou eletricidade.
Ele funciona utilizando as propriedades semicondutoras do mineral galena, com uma grande antena, um circuito ressonante formado por uma bobina e um capacitor variável,  um circuito retificador composto por um diodo de galena e um capacitor para filtrar as altas frequências e finalmente um transdutor de alta impedância (alto-falante). 

Esquema Elétrico

Esquema Elétrico - wikipedia
Esquema Elétrico - Wikipédia


Montagem do rádio

Para montagem seguirei os seguintes links:

      Rádio Gagá

Referêncas:
           Wikipédia - Rádio de galena 

FidoCadJ - Desenho de circuitos elétricos

FidoCadJ - Desenho de circuitos elétricos

Programa para elaboração de desenhos de diagramas de circuitos elétricos e leiautes de placas de circuito impresso permitindo uma grande flexibilidade gráfica e facilidade de uso.

Algumas características:

Multiplataforma -  MacOSX, Windows, Linux;
Exporta em uma variedade de formatos gráficos;
Formato de texto compacto, permitindo uma forma simples de compartilhamento de código em fóruns;
EDA para amadores;
Em vários idiomas:  Italiano, Francês, Espanhol, Chinês, Holandês;
Desenho de esquemas elétricos e de PCB simples.

Simples de se usar:

Baixar na versão do seu sistema operacional na página do projeto depois instalar e executar.

Para baixar o manual de uso clique no link.

Até a próxima.

quarta-feira, 17 de abril de 2013

Galaxy S - Como usar Bluetooth e Wifi no Modo Offline

Galaxy S - Como usar Bluetooth e Wifi no Modo Offline


Tive uma curiosidade de saber se podíamos utilizar os recursos de wifi e bluetooth com o célular no modo OffLine e dei uma pesquisada na internet e não encontrei nada então fui dá uma olhada nas bases de dados de configurações do celular e encontrei como se pode fazer para isso funcionar. Estou postando para que possa servir para mais alguém.


Requisitos:
  • Celular com root liberado.
  • Um editor de SQLite -  SQLite Manager
  • Visualizador de arquivos com acesso root – Root Explorer

Primeiramente é necessário liberar o root no celular veja como fazer isso no Galaxy S nesse link. Depois é só navegar até o diretório das bases de dados do SQLite onde fica os arquivos da base de dados das configurações do sistema em: /dbdata/databases/com.android.providers.settings conforme imagem abaixo.

Base de Configuração do Android
Base de Configuração do Android



Crie o diretório /mnt/sdcard/Base e fazer uma cópia do arquivo settings.db para esse  diretório, conforme imagem abaixo.

Diretório de Cópia de Bases
Diretório de Cópia de Bases


Execute o aplicativo SQLite Manager e selecione a base de dados settings.db, aparecerá a relação das tabelas dessa base de dados.


Seleção de Base de dados
Seleção de Base de dados


Selecione a tabela system, nos registros terá airplane_mode_radios com o valor cell, bluetooth,wifi conforme imagem abaixo.



Edição da tabela System
Edição da tabela System



Segure o dedo uns instantes em cima do registro que quer alterar e aparecerá um menu e escolha Update Row conforme imagem abaixo.


Menu do SQLite
Menu do SQLite


Altere o campo que tem airplane_mode_radios de cell,bluetooth,wifi para somente cell e clique em OK, conforme imagem abaixo.


Editando registro
Editando registro



O registro será gravado e você terá que reiniciar o celular para poder vê a atualização. Na imagem abaixo se vê como pode ser usado o wifi e bluetooth com o celular em Modo OffLine.


Usando Wifi e Bluetooth em Modo OffLine
Usando Wifi e Bluetooth em Modo OffLine



Para o momento é só isso, até a próxima. 











Acesso root no Android

Acesso root no Android


O que é acesso root?

O acesso root ao Android é quando você consegue obter privilégios de Administrador no aparelho, mais ou menos com no Linux um usuário que tenha a senha de root e tem acesso irrestrito ao sistema. Com o aparelho rooteado você pode fazer tarefas que antes não tinha privilégios, a utilidade disso é que você pode executar um app que tenha funções especificas e a necessidade de ser executada com funções de administrador tais como: Titanium Backup, Voodoo Control Plus e um muito bom que eu uso Transparent Proxy.

Na internet existe um grande número de tutoriais para se obter acesso root ao Android um muito bom que conheço é o seguinte: 



Nesse tutorial mostra de uma maneira bem clara como fazer o acesso root no Android.


Se você necessita de um acesso privilégiado ao seu celular esse tutorial é excelente.

Até a próxima.

quarta-feira, 3 de abril de 2013

Curso gratuito de Arduino


Para os que gostam de eletrônica e especialmente do Arduino encontrei na internet um Site que se chama Laboratório de Garagem que é uma iniciativa voltada para a integração, colaboração e apoio aos desenvolvedores independentes de ciência e tecnologia.

Eles disponibilizam vários serviços para seus associados tais como:
  1. Laboratório comunitário localizado em São Paulo que oferece infra-estrutura necessária para o desenvolvimento de projetos protótipos. www.labdegaragem.com.br/espaco
  2. Incubadora que oferece estrutura básica de escritório e apoio de marketing, logística e administração. Para novos projetos desenvolvidos por garagistas. www.labdegaragem.com.br/incubadora
  3. Rede social que oferece diversos recursos para interação e colaboração entre seus membros (fórum, wiki, blog, etc). www.labdegaragem.com
  4. Loja virtual que oferece peças, componentes e acessórios para que garagistas de todo o Brasil possam dar vida às suas ideias. Entre outras marcas, a Loja LdG é distribuidora oficial da SparkFun.comhttp://loja.labdegaragem.com.br


Para os iniciantes é bom visitar o Curso Gratuito de Arduino no link: http://labdegaragem.com.br/cursoarduino/

O que é Arduino?


Arduino

Arduino é um projeto Open-Source que utiliza eletrônica e programação embarcada de alto nível.  O Arduino é composto de duas partes Hardware e Software:


O Hardware

O hardware consiste de um microcontrolador Atmel AVR de 8 bits, com componentes complementares que facilitam a programação e incorporação de outros circuitos, os conectores são expostos, permite  interligar o Arduino com outros módulos expansivos conhecidos como Shields.


O Software

O Software é composto da Arduino IDE que é uma aplicação multiplataforma escrita em Java derivada dos projetos Processing e Wiring. Inclui um editor de código com recursos de realce de sintaxe, parênteses correspondentes e indentação automática, sendo capaz de compilar e carregar programas para a placa com um único clique.

O Arduino IDE usa o Conjunto de ferramentas GNU e o AVR Libc para compilar os programas, para depois, com o avrdude, enviar os programas para a placa.


Aplicações

A principal finalidade do Arduino num sistema é facilitar a prototipagem, implementação ou emulação do controle de sistemas interativos, a nível doméstico, comercial ou móvel, da mesma forma que o CLP controla sistemas de funcionamento industriais. Com o Arduino é possível receber e enviar informações de quase todos os tipos de sistemas eletrônicos.
Possíveis aplicações são:  Identificar a aproximação de uma pessoa através de sensores ou variar a intensidade da luz de uma ambiente.


Expansões do Arduino

O Arduino tem um conjunto de extensões que expandem a funcionalidade do Arduino para que o mesmo adquira funções especializadas, desde a conexão através de Bluetooth até o controle de motores. Tais extensões são feitas através de um hardware chamado Shields – que são placas para serem montadas em cima da placa Arduino.


Alguns exemplos:

XBee Shield - Permite que uma placa Arduino comunicar-se sem fios a distâncias de até 100 pés (interiores) ou 300 pés (outdoors), utilizando o Maxstream Xbee - módulo ZigBee.
Motor Shield - Permite que uma placa Arduino controle motores DC e leia os codificadores.
Ethernet Shield - Permite que uma placa Arduino conectar-se à internet.


Programando com o Arduino

As duas partes básicas de um programa Arduino são feitas através de dois métodos.

void setup() {
}

void loop() {
}

O método setup é executado uma única vez quando a placa é ligada e o método loop terá o código de execução por todo o tempo que a placa estiver ligada. No método setup é onde se define os pinos de entrada e saída e os parâmetros de inicialização.


Sintaxe

Tendo o Arduino uma sintaxe igual a programação em C/C++.
“//” – Começa um comentário de uma linha.
“/*texto */” – Comentário de várias linhas.
“{}” – Um bloco de comandos.
“;” – Termino de Comando.


Tipos de Variáveis

Aqui está sendo mostrado os tipos mais comuns e utilizados. No Site Arduino mostra todos os tipos e o que cada um faz.
"boolean" - Sendo Verdadeiro(true) ou Falso(false). Existe também Alto(HIGH) e Baixo(LOW).
"int" - Sendo os números inteiros(de -32768 a 32767).
"unsigned int" - Sendo os números inteiros positivos(de 0 a 65535).
"long" - Sendo os números inteiros(de -2147483648 a 2147483647).
"unsigned long" - Sendo os números inteiros positivos(de 0 a 4294967295).
"float" - Sendo os números inteiros com decimais(-3.4028235*(10 elevado a +38) a 3.4028235*(10 elevado a +38)).
"char" - Sendo um caractere - Obs: Existe o "string" que é um conjunto de caracteres.


Operadores Matemáticos

"=" - Atribui um valor a uma variável.
"+" - Soma.
"-" - Subtração.
"*" - Multiplicação.
"/" - Divisão.
"%" - Resto da divisão. Ex: 5%2 -> O resto da divisão de 5 por 2 é 1.


Operadores de comparação

"==" - "é igual a".
"!=" - "é diferente a".
"<" - "é menor a".
">" - "é maior a".


Estruturas de controle

"if(condição){comandos1} - Se a condição for verdadeira então faça os comandos1
else if(condição){comandos2} - Senão se a condição for verdadeira então faça os comandos2
else{comandos3}" - Senão faça os comandos3. Esta estrutura pode ter apenas o "if" caso tenha apenas uma condição.

"for(variável=início;condição;modifica){comandos}" - Para a variável=início e a condição for verdadeira faça os comandos, depois modifica e verifica se a condição é verdadeira. Geralmente o "for" é utilizado para executar os comandos um número n de vezes dentro do void loop() {}.

"while(condição){comandos}" - Enquanto a condição for verdadeira faça os comandos. Parecido com o "for". Esta estrutura verifica primeiro a condição e depois executa os comandos.

"do
{comandos}
while(condição)" - Faça os comandos enquanto a condição for verdadeira. Esta estrutura executa primeiro os comandos e depois verifica a condição.


Portas digitais e analógicas

Na prática ligamos componentes em portas digitais e analógicas e através do código Arduino, manipulamos as portas: pinMode(<porta>, <modo>): configura uma porta digital para ser lida ou para enviarmos dados.
digitalWrite(<porta>, 0 ou 1): envia 0 ou 1 para porta digital.
digitalRead(<porta>): retorna um 0 ou 1 lido da porta.
analogRead(<porta>): retorna de 0 a 1023 com o valor da porta analógica.
analogWrite(<porta>, <valor>): escreve em uma porta PWM um valor de 0 a 255.


Compilação

A compilação com o Arduino é feita com o Software fornecido no link  http://arduino.cc/en/Main/Software instale e abra o IDE do Arduino:

A imagem abaixo mostra a tela que se abre ao executar a IDE do Arduino.

Tela do IDE do Arduino
IDE do Arduino

Após abrir o IDE do Arduino, clique em Tools, depois em board e selecione o modelo do seu Arduino, conecte o Arduino na porta USB, clique novamente em Tools, depois em Port e selecione a porta de comunicação do seu Arduino.

Para se selecionar um Sketch para se trabalhar clique em File, depois em Examples, em Basics clique em Blink. Irá abrir outra janela com a programação do exemplo "Piscar o LED (Blink)".

Sketch do exemplo do Blick
Sketch do exemplo do Blick

Para fazer a compilação e mandar o código para o Arduino clique no botão upload como mostrado na figura abaixo:

Mandando o Sketch para o Arduino
Mandando o Sketch para o Arduino

Se a compilação correu tudo certo e também a porta selecionada estive certa, irá piscar o LED L na placa, senão, mude a porta de comunicação do Arduino.

Essa é uma pequena introdução sobre Arduino  e espero ter ajudado alguém.

Até a próxima.



segunda-feira, 1 de abril de 2013

Ferramentas do SDK Android



As Ferramentas do SDK Android

O SDK do Android é um ambiente composto de vários componentes que juntos possibilita um desenvolvimento mais rápido e eficiente de aplicativos para dispositivos Android.  As partes mais importantes do SDK Android são um conjunto de tecnologias como Java, Eclipse, máquina virtual Dalvik, QEMU e outras plataformas, que juntas formam as partes mais importantes do SDK Android. Abaixo será apresentado algumas dessas ferramentas.


Android Debug Bridge (adb)

É um programa que permite que controle tanto o emulador quanto os dispositivos e executa um Shell no ambiente do emulador ou no dispositivo que se está conectado. Permitindo assim que se tenha um controle muito grande sobre o ambiente em que se está desenvolvendo. Ele permite fazer tarefas desde as mais simples até se obter acesso root ao ambiente do emulador ou do dispositivo.


Dalvik Debug Monitor Server (DDMS)

O Dalvik Debug monitor Server é quem monitora todo o trafego entre uma Java Virtual Machine (JVM) e qualquer depurador Java. O DDMS fornece vários recursos para ajudar no desenvolvimento de uma aplicação Android e pode ser acessada por uma interface de usuário independente ou através de uma interface incorporada ao Eclipse por meio do plug-in ADT. Abaixo está uma tela da interface acionada pela linha de comando do DOS com o comando ddms.bat:

Execução do comando ddms.bat na linha de comando
Execução do comando ddms.bat na linha de comando

Como se vê na imagem acima a interface independente de usuário do DDMS dá acesso as seguintes informações:


Lista de dispositivos conectados e os dispositivos Virtuais

No painel superior esquerdo mostra todas os dispositivos conectados através do USB ao seu Computador e também todos os dispositivos Virtuais (AVD) executados no emulador. Expandindo-se um máquina listada será apresentada a lista de todas as tarefas executadas nas máquinas virtuais (VMs) Dalvik.


Informações da VMS

No painel superior direito tem as informações de cada VMs Dalvik que estão sendo executadas nos dispositivos.


Informações de thread

As informações sobre as threads de cada processo são encontradas também na guia Threads do painel superior direito da janela do DDMS.


Gerenciador do sistema de arquivos


O sistema de arquivos do dispositivo Android ou do dispositivo virtual é explorado pelo gerenciador de arquivos do DDMS que é encontrado no menu File Explorer..., no menu Devices.  Nele pode pegar um arquivo do dispositivo para o computador, gravar para o dispositivo um arquivo que esteja no computador, deletar um arquivo do dispositivo ou adicionar uma pasta ao dispositivo. A imagem abaixo mostra a janela do File Explorer do DDMS:

Janela File Explorer do DDMS
Janela File Explorer do DDMS

Simulação de operações telefônicas e de localização

Na guia emulator control, no painel superior direito tem um simulador de chamadas telefônicas de voz e de SMS, também é possível simular a localização do dispositivo emulado através dessa guia.


Captura de tela

No menu Device há a opção Screen Capture..., que é uma opção que captura uma imagem do dispositivo conectado ao computador ou a um dispositivo virtual sendo executado no emulador.


Registro dos processos


Na parte inferior do DDMS é mostrado um registro da saída dos processos sendo executado no dispositivo selecionado. Pode ser  feito um filtro das informações levando em consideração os seguintes dados: Tag do log, Mensagem do log, PID do processo, pelo nome da Aplicação e pelo nível do Log. Conforme mostra imagem abaixo:




Dummping do dispositivo

No menu Device existem opções de Dump do estado do Dispositivo, do estado do Aplicativo e do estado do rádio.



Plug-in  ADT para o Eclipse

O plug-in ADT foi feito especialmente para o Eclipse e tem várias ferramentas para uma criação rápida de um projeto com toda a hierarquia de arquivos para a construção correta de um aplicativo Android. Com esse plug-in é feito no Eclipse todos os procedimentos para a construção do projeto, edição dos arquivos do projetos, compilação do aplicativo, execução e depuração.

Através do plug-in ADT os componentes do SDK do Android são executados no Eclipse. A seguir é mostrado os componentes do plug-in ADT utilizados no Eclipse para o desenvolvimento de Aplicativos Android.


Android Layout Editor

As interfaces de usuários dos aplicativos Android podem ser especificadas tanto em código como em arquivos XML.

O plug-in ADT adiciona um Editor Visual que possibilita ao desenvolvedor a visualização e composição do Layout das telas do aplicativo Android, esse editor é sempre aberto quando um arquivo de layout de tela é selecionado. Ele possibilita tanto a visualização do código XML do arquivo da tela como a representação do modo gráfico da tela.


Android Manifest Editor

É incluído também um editor para o arquivo de manifesto do Android, esse editor é especializado para ler o XML e mostrar de forma gráfica as opções de configuração do arquivo podendo também fazer alteração do manifesto do Android.

No Android também existem outros editores especializados para visualização e edição de outros arquivos XML do Android.


Compiladores do plug-in ADT

O plug-in ADT também fornece os compiladores específicos do Android que permitem seja utilizado o Java como linguagem de programação de aplicativos Android.


Depurador do plug-in do ADT

O plug-in ADT adiciona ao Eclipse os componentes que o permitem fazer todo o processo de depuração e execução do aplicativo em um dispositivo ou em um AVD de um emulador. Essa depuração pode ser feita com a perspectiva DDMS que o plug-in ADT adiciona ao Eclipse.


Dispositivos Virtuais

Os Dispositivos Virtuais Android (AVDs) são capazes de emular um dispositivo Android real e são executados em um emulador QEMU com uma imagem do sistema Android feita especialmente para ser rodada em um emulador.


Gerenciador de AVD

É um software que tem como função criar e gerenciar as AVDs que são utilizadas para o desenvolvimento dos aplicativos Android.

Mas informações sobre as ferramentas do SDK Android em:




segunda-feira, 25 de março de 2013

Como acelerar um emulador Android



Muitos desenvolvedores tem o problema com os emuladores que ficam muito lentos para iniciar e executar algumas tarefas com gráficos em seus computadores, essa lentidão causa um mal estar muito grande, pois temos que esperar um bom tempo para poder rodar uma simples aplicação. Pensando nisso o Google programou formas para se acelerar o emulador.

Existem três formas para se acelerar o emulador:

  • Usando snapshot
  • Usando aceleração de  hardware x86 na imagem do Android
  • Usando aceleração GPU

Usando snapshot

Sendo a inicialização do emulador do Android muito lenda, foi criado um meio de se trabalhar com snapshot das imagens do emulador que funciona da seguinte maneira após o primeiro boot o estado do emulador é gravado no disco rígido e na próxima inicialização o estado é lido para a memória sem passar pelos demorados procedimentos de inicialização do Android reduzindo o tempo de inicialização.

Utilizando o snapshot do Android

Primeiro você tem que habilitar o Snapshot na criação do AVD conforme se ver na imagem abaixo:

Criação de AVD com Snapshot
Criação de AVD com Snapshot

Após a criação do AVD inicialize-o e verifique se está ativada a opção de Salvar para snapshot conforme a imagem abaixo:

Habilitar Salvamento para Snapshot
Habilitar Salvamento para Snapshot

Depois da primeira inicializada do AVD as próximas serão significantemente mais rápidas.


Aceleração de Hardware x86

Para a aceleração de hardware x86 é necessário ser usada uma imagem x86 do Android pois o Emulador Android usa por padrão uma imagem ARM. E como essa arquitetura é muito diferente da x86 o emulador precisa fazer uma conversão de todas as instruções de ARM para o x86 e isso causa uma perca de performance.

Primeiro passo para se ter a aceleração de hardware x86 é baixar no Android SDK Manager os seguintes itens:

  • Intel x86 Emulador Accelerator (HAXM) e
  • Intel x86 Atom System Image (Para cada versão de API do Android que se usar para o desenvolvimento)


Conforme imagem abaixo:


Download dos componentes de Intel x86
Download de Intel x86

Para instalação do HAXM é necessário ir ao diretório extra  do SDK do Android e executar o seguinte arquivo: haxm-windows_r02.exe.

Agora é só criar um AVD usando uma imagem Intel Atom (x86) conforme imagem abaixo:



O desempenho da imagem do emulador  fica sensivelmente visível, mas esse recurso só funciona se seu computador possui  um processador Intel com suporte a VT-x.  Para mais informações sobre HAXM, acesse http://www.intel.com/software/android.


 Usando aceleração GPU OpenGL

O Emulador Android por padrão vem com a aceleração de GPU desabilitada e pode ser habilitada na criação do AVD, clicando na opção Use Host GPU, conforme imagem abaixo:

Aceleração por GPU
Aceleração por GPU


A aceleração GPU não é compatível com snapshot.

A aceleração GPU torna seu AVD bastante rápido para os testes de seus aplicativos, mais não tendo o snapshot o torna lento na inicialização.

Nos meus testes foi a melhor opção, pois a execução dos aplicativos ficou mais rápido mesmo tendo a inicialização se tornado mais lenta, é só inicializar a AVD antes dos testes e só desligar depois que terminar os trabalhos, assim se economizar um bom tempo durante os vários testes após cada mudança de código e compilação.

Espero ter ajudado com mais esse post.




















quinta-feira, 21 de março de 2013

Decompilação de Programas Android




Procurando na internet um meio de vê como extrai o código fonte de uma aplicação Android,  achei os links acima, o primeiro ensina como descompactar o apk extraindo os códigos fontes e também os XML de layout, o segundo é uma ferramenta disponibilizada no fórum da XDA que faz todo o trabalho de decompilação dos apks e pode fazer também a alteração dos fontes e posterior compilação novamente.

Com base nestes dois links fiz um BAT para decompilar um APK mais adequado e simples para minha utilização. Disponibilizo aqui para quem queira dá uma estudada.

Aviso: Respeite os direitos autorais.

Faça o Download nestes links: 

Depois de descompactado ele fica com a seguinte estrutura:

Estrutura de diretório BAT de decompilação
Estrutura do Diretório

A estrutura de diretórios tem os seguintes pastas:
  • apks – Onde se coloca os arquivos apk que se quer decompilar.
  • apktool – Arquivos do apktool.
  • Decompilados – Onde um BAT descompacta os arquivos.
  • dex2jar – Utilitário para gerar o jar com o código fonte do apk.
  • Other – Outros arquivos necessários para descompactar o apk.
  • decompila.bat – Arquivo de lote que executar as tarefas necessárias para a decompilação do apk.

É só executar o arquivo decompila.bat e será apresentado a tela de comando do DOS.

Execução do BAT decomplica.bat
Execução do BAT decompila.bat

Escolha a opção 1 para se escolher um APK para  decompilar e será lidos os arquivos do diretório apks e será criado uma lista para escolha do apk para decompilar.


Tela de escolha do APK
Escolha do APK 

Após a escolha do apk para decompilar execute as opções 2,3,4 para gerar os arquivos descompactados e a opção número 5 para sair do BAT. Será criado no diretório Decompilados a seguinte estrutura:

Estrutura criada pela decompilação
Estrutura criada pela decompilação

Onde:
  • MinhaAplicacao – É o nome do programa selecionado para decompilação.
  • MinhaAplicacao.apk  - É o diretório onde se encontra os fontes do apk no arquivo jar criado.
  • Xml – É o diretório com os arquivos  xml dos layouts do apk.


A visualização do fonte do apk é feita com o programa Java Decompiler do site: http://java.decompiler.free.fr.


Para visualizar o fonte descompacte o arquivo jd-gui.rar  e abri o programa Java Decompiler e navegar até o diretório MinhaAplicacao.apk e escolher o arquivo classes_dex2jar.jar, será apresentado a tela seguinte:

Visualização do código fonte
Visualização do código fonte

Logo abaixo tem a comparação dos código originais e os gerados pela decompilação:

Comparação dos códigos fontes originais e decompilados
Comparação dos códigos fontes originais e decompilados


Espero que este tutorial seja de ajuda para alguém.