Mostrando postagens com marcador Emulador. Mostrar todas as postagens
Mostrando postagens com marcador Emulador. Mostrar todas as postagens

sábado, 5 de julho de 2014

Android Wear


Olá povo,

No Google I/O 2014, um dos principais destaques foi o Android Wear, versão do Android focada em "dispositivos vestíveis", em especial os smartwatches, ou relógios inteligentes. Cada participante ganhou um e poderia optar por um dos dois modelos: o Samsung Gear Live ou o LG G watch. Optei pelo da Samsung devido ao tamanho da tela um pouco maior que o da LG, mesmo sabendo que a bateria durava um pouco menos. Após uma semana de uso, estou satisfeito com o "brinquedinho".
Uma coisa muito bacana de usar o relógio é que ele fica sincronizado com o seu smartphone/tablet, dessa forma toda notificação disparada aparece em ambos os devices. Assim, quando uma notificação é removida do relógio (fazendo o swipe para direita) ela é removida do smartphone/tablet e vice-versa.

Mas não é porque você não tem o relógio que você não pode brincar com o Android Wear. Nesse post vou mostrar como configurar o ambiente para começarmos a brincar os relógios Android.

O que precisaremos?
1) Inicialmente necessitamos da atualização do Google Play Services 5, Google Search e do aplicativo do Android Wear no seu aparelho. Como elas estão em fase de testes (Developer Preview), devemos nos tornar testadores desses aplicativos. Para tal, siga os passos descritos nesse link, que basicamente permitirá que você se torne um tester da versão developer preview desses aplicativos.
2) Ainda no link acima, é informado que devemos abrir o Android SDK Manager para adicionarmos um novo repositório para podermos baixar o SDK Tools 23 e o Platform Tools 20.
3) Precisaremos também do Android Studio 0.8.1 para criar nossos aplicativos wearable. Ele disponível nesse link.
4) Quando tudo estiver pronto, abra o AVD Manager e crie um novo AVD. Conforme podemos observar na figura abaixo, no campo Device temos a opção Android Wear Square e Android Wear Round que representam a tela do relógio que pode ser quadrada ou redonda respectivamente. O comando de voz presente no dispositivo real não está disponível no emulador, então devemos deixar o campo "Hardware keyboard present" habilitado. Preencha os demais campos conforme a figura e depois clique em Ok.
5) Configurado o emulador, mande executar e você deve ter algo como a figura abaixo.
6) Agora abra o terminal e digite o seguinte comando na pasta ANDROID_SDK/platform-tools.
 adb -d forward tcp:5601 tcp:5601
Esse comando deve ser feito para permitir a conexão entre o seu smartphone/tablet e o emulador do wear.
7) Agora abra o aplicativo do Android Wear, clique no menu e selecione a opção Parear com novo wearable.
Será exibida uma tela similar a abaixo. Clique em Next (seta azul) para continuar.

Clique na engrenagem e selecione "Parear com emulador".
Se tudo correr bem, aparecerá a tela inicial com o título "Emulador Conectado".

Um teste simples
Apenas para confirmar se está tudo funcionando, vou mandar um email para mim mesmo. Isso fará com que uma notificação seja disparada no smartphone/tablet. Se estiver tudo ok, a mensagem também chegará no emulador. Conforme podemos ver na imagem abaixo.
Ao tocar na notificação ela ocupará a tela toda e poderemos vê-la melhor, inclusive podendo fazer scroll. Ao deslizar para a esquerda, podemos ver mais opções como excluir, responder e abrir no smartphone.
Se escolhermos a opção "Responder", podemos enviar um email de resposta apenas falando o seu conteúdo. Ao selecionarmos essa opção a tela abaixo será exibida.
No emulador, temos que digitar o texto de resposta, mas no relógio real, apenas falamos, o reconhecimento de voz é feito e o email será enviado.
No próximo post vou mostrar como fazer isso na sua aplicação! \o/

Qualquer dúvida, deixem seus comentários.

4br4ç05,
nglauber

Fonte: http://developer.android.com/training/wearables/apps/creating.html

domingo, 17 de novembro de 2013

Genymotion: o melhor emulador para Android

Olá povo,

Todo mundo que mexe com Android sabe que o emulador nativo da plataforma não é lá essas coisas. Ele demora pra abrir e é bem lento. Apesar de ser muito melhor (e recomendado) testar sua aplicação em um aparelho de verdade (aliás, em vários), o emulador pode ajudar a ver o aplicativo se comporta em outros tamanhos de tela ou versões do Android, por exemplo.
Meu aluno do TECDAM, Thomas Cristanis me deu a dica de usar o Genymotion.


Esse emulador é fantástico! Rápido, permite redimensionamento da tela, usar a webcam, e o melhor, roda o Google Play! Consequentemente todas as APIs baseadas no Play (como Google Maps v3) funcionam nesse emulador.
Para usá-lo, você terá que se registrar gratuitamente, fazer o download e seguir as etapas descritas no próprio site. Ele funciona em Windows, Mac e Linux e pode ser baixado aqui.
Ele utiliza o Virtual Box para criar uma VM com a imagem do Android. Testei com imagens de smartphones e tablets e tudo funciona muito bem.
Alguns colegas tiveram problemas com ele (no Windows, pra variar) mas isso era por conta da placa de vídeo (que não suportava GPU) ou do processador (antigo) que não suportava VMs.

4br4ç05,
nglauber

quarta-feira, 22 de maio de 2013

Android: Dicas 9

Olá povo,

Segue mais um post da série "Dicas de Android". Aproveitem!

Dica 1 - Driver ADB universal para Windows

Essa dica foi dada pelo Pedro Borba, meu aluno da Unibratec. Muitas vezes quando conectamos alguns devices menos populares e eles não são reconhecidos pelo Windows, e às vezes é até complicado achar esses drivers na internet. O site abaixo disponibiliza uma versão do driver ADB, que funciona em muitos desses aparelhos. Vale a pena conferir.

http://adbdriver.com/

Dica 2 - Imagem de background repetida
Como nas velhas páginas HTML, às vezes é interessante colocar uma imagem de background repetida lado a lado, dando a impressão que é uma imagem maior. A solução é criar um arquivo XML (meu_bg.xml por exemplo) na pasta drawable com o seguinte conteúdo.
<bitmap 
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:src="@drawable/minha_imagem_que_repete"
  android:tileMode="repeat" />
Depois é só colocar @drawable/meu_bg como sua imagem de background.

Dica 3 - Vários núcleos do processador para o Emulador
Essa dica foi dada por Daniel Sant'Ana, meu aluno do TECDAM. Quando executamos o emulador,  apenas 1 núcleo do processador da máquina é ativado. Para permitir que o emulador utilize os outros núcleos do processador, abra o gerenciador de tarefas do windows, clique em processos, e encontre o processo referente ao emulador. Em seguida, clique com o botão direito nele, e escolha a opção afinidade, então marque todos os núcleos. Se quiser, você ainda pode definir a prioridade do processo do emulador como alta. Feito isso, é possível ganhar um pouco de desempenho no emulador.

Outra opção, em fase experimental, pode ser vista aqui, na seção "Configuring Virtual Machine Acceleration". Ou aqui, no post escrito pelo meu colega Eric Cavalcanti.

Dica 4 - HttpURLConnection ou HTTPClient
A maioria das aplicações Android utiliza HTTP para enviar e receber dados. O Android tem duas APIs para essa tarefa: HTTPClient da Apache e HttpURLConnection do próprio Java.
Conforme podemos ver aqui e aqui, o pessoal da Google está recomendando utilizar o HttpURLConnection para aplicações voltadas para Android 2.3 ou superior. Nas versões 2.2 e inferiores, essa API tinha uma série de bugs que foram corrigidos a partir da versão seguinte. Além disso, alguns recursos como compressão e cache.

Dica 5 - DumbleDroid e WebCachedImageView
Meu amigo Leocádio Tiné, um dos caras que mais conhece de Android que eu conheço, acabou de disponibilizar para a comunidade essas duas bibliotecas interessantíssimas. A primeira faz o download de arquivos XML e JSON e autoMAGICAmente cria as classes Java que representam essas estruturas.
Perguntei ao Leocádio qual a diferença entre essa biblioteca e a GSON (da Google) e o Simple XML. E a resposta foi:

"A diferença básica do Dumbledroid pra essas 2 libraries é que o Dumbledroid faz caching automático em memória e em disco, e roda código específico pra Android. Por exemplo: ele usa as classes de JSON incluídas no Android SDK, e não as do Java SDK, como o GSON. As diferenças específicas: GSON: Usando GSON, você tem que carregar o JSON manualmente. Usando Dumbledroid, basta passar a URL que ele faz o carregamento, parsing e caching. É mais simples. SimpleXML: Usando SimpleXML, além de ter que carregar o XML manualmente, você tem que escrever annotations nas classes pra mapear os campos aos nós do XML. No Dumbledroid, isso não é preciso."

Além disso o DumbleDroid já tem um plugin para Eclipse que facilita ainda mais o seu uso.
Já o WebCachedImageView é bem similar ao ImageView nativo, com o benefício de passarmos apenas a URL da imagem que desejamos e ainda fazer o cache da mesma.

Segue os links para download das libs:
https://github.com/leocadiotine/Dumbledroid
https://github.com/leocadiotine/WebCachedImageView

Vou tentar fazer um post só pra essas duas libs em breve.

Dica 6 - Detectando JavaScript da WebView na Activity
Um recurso que pode trazer grandes possibilidades é conseguirmos capturar funções Java Script que são executadas dentro de uma WebView. Criem o arquivo meu.html dentro da pasta assets do projeto e deixe-o conforme abaixo.
<html>
<header>
<script type="text/javascript">
function showAndroidToast(s, t) {
  window.nglauber.showToast(s, t);
} 
</script>
</header>
<body>
  <H1>Formulario em HTML</h1>
  <form name="meuForm">
    Nome: 
    <input type="text" name="txtNome"/><br>
    Idade: 
    <input type="text" name="txtIdade"/><br>
    <input type="button" 
      onclick="showAndroidToast(txtNome.value, txtIdade.value);" 
      value="Enviar">
  </form>
</body>
</html>
É possível interceptar a função showAndroidToast e chamar o método showToast dentro da nossa Activity. Dessa forma, quando o usuário pressionar o botão do HTML, o código da Activity será executado.
public class MainActivity extends Activity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  
    WebView wv = (WebView)findViewById(R.id.webView1);
    WebSettings settings = wv.getSettings();
    settings.setJavaScriptEnabled(true);
    wv.addJavascriptInterface(this, "nglauber");
    wv.loadUrl("file:///android_asset/meu.html");
  }

  @JavascriptInterface
  public void showToast(String s, String t) {
    Toast.makeText(this, 
      "Nome:"+ s + " Idade:"+ t, 
      Toast.LENGTH_SHORT).show();
  }
}
Apesar de não ser algo que não encorajo, essa solução pode ser útil para alguns tipos de tela. Disponibilizamos a interface "nglauber" para o código JavaScript chamar. Notem que no JavaScript ficou window.nglauber.showToast. Outro detalhe aqui é que existe um bug do Android 2.3 que impede que esse código funcione nessa versão. Outro detalhe é a Annotation @JavascriptInterface que só é necessária a partir do Android 4.2, em versões anteriores, basta o método ser público.

Dica 7 - Definindo uma orientação fixa via código
É possível definir uma orientação fixa para um Activity através do arquivo AndroidManifest.xml através da propriedade screenOrientation.
<activity name=".MinhaActivity"   
  android:screenOrientation="landscape"/>
Mas e se quisermos que essa configuração seja feita dependendo de alguma condição? Podemos usar o código abaixo.
setRequestedOrientation(
  ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)

Dica 8 - Versão do Android do Aparelho
Obtendo a versão do Android que está rodando no aparelho.
int apiLevel = Build.VERSION.SDK_INT;
if (apiLevel < Build.VERSION_CODES.HONEYCOMB){
  // Usando Android 2.3 ou inferior
} else if (apiLevel < 
  Build.VERSION_CODES.ICE_CREAM_SANDWICH){
  // Android 3.x
} else {
  // ICS ou superior
}

4br4ç05,
nglauber

domingo, 30 de janeiro de 2011

Problema ao iniciar emulador do Android

Olá povo,

Meu aluno Rogério Casal do curso de Android do Unibratec me mandou esse problema e a respectiva solução.

Ao criar um AVD (Android Virtual Device) para que possamos executar um emulador do Android, essas configurações ficam armazenadas no seguinte diretório:

Para Windows:
C:\Usuário\.android\avd\
C:\Documents and Settings\Usuário\.android\avd

Para Linux e OS X:
/home/Usuário/.android/avd/

Porém, se o nome do seu usuário contém acentuação ou cedilha, o emulador não inicia corretamente com AVDs que contenham esses caracteres. Normalmente acontece o seguinte erro:

emulator: ERROR: no search paths found in this AVD's configuration.

A solução encontrada foi mover seu arquivo de AVD para um caminho que não contenha acentuação. Para fazer isso, após criar o AVD, abra o prompt e digite o seguinte comando:

android move avd -n nome_do_avd -p C:\AVDs

O caminho especificado deve sempre criar um diretório ao invés de usar uma pasta já existente (no exemplo acima seria criado o diretório AVDs).

4br4ç05,
nglauber