Android – Entendendo a unidade dpi (Density-independent Pixels)

DesignBytes: Density-independent Pixels (Portuguese)

“Nesse episódio de DesignBytes em português, uma breve explicação como os designers de apps Android podem facilmente trabalhar entre diferentes telas com variadas densidades de pixels, usando os density-independent pixel (abreviado como dp ou dip), uma unidade virtual de pixel que mantém objetos com o mesmo tamanho físico entre os dispositivos. Entender as unidades de dp é crítico para a criação de um design de sucesso para um app Android.”

(Lembre-se de nos ajudar clicando nos anúncios em nossa página.)

Android – ListView com índice de rolagem. (ListView with fast scroll and Index Scrolling)

fast Index Scrolling

Além da rolagem tradicional, uma lista em ordem alfabética longa também pode oferecer a rolagem de índice: uma maneira de navegar rapidamente para os itens que começam com uma determinada letra. Com a rolagem de índice, um indicador de rolagem aparece mesmo quando o usuário não está rolando. Tocando ou arrastando-o faz com que a letra atual para aparecer de forma proeminente. (Android Developer – Scrolling).

Abaixo vamos demostrar como fazer a lista mostrada na imagem acima. Vamos iniciar com o main.xml, nele vamos definir nossa Lista vejamos:

Continue reading

Android – Como buscar redes Wi-fi e se conectar programaticamente (Wi-Fi Scan)

Android-WiFi

Nesta publicação vamos mostrar como realizar uma busca de redes Wi-Fi (wirelles) e um exemplo simples de como se conectar.

Permissões Necessárias:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

Abaixo criei uma classe para gerenciar o adaptador Wi-Fi, nela vamos ter um Listener que vai notificar nossa tela quando a busca foi terminada, e um método statico para iniciar a consulta. Continue reading

Android – Criando Menus de opções (Creating an Options Menu – onCreateOptionMenu)

options menu

 

O menu de opções é onde você deve incluir ações e outras opções que são relevantes para o contexto da atividade atual, como “Atualizar”, “Editar” e “Configurações”.

Para todos os tipos de menu o Android fornece um formato XML padrão para definir os itens. Em vez de construir um menu no código de sua atividade, você deve definir um menu e todos os seus itens em um XML. Você então infla o recurso menu (carregá-lo como um Menu de objeto) em sua atividade.

O recurso de menu em XML é uma boa prática por algumas razões:

  • É mais fácil de visualizar a estrutura do menu em XML.
  • Ele permite que você crie configurações do menu alternativas para diferentes versões da plataforma, tamanhos de tela e outras configurações, aproveitando os recursos do aplicativo.

Para definir o menu, crie um arquivo XML dentro do seu projeto na seguinte pasta res/menu/ (se a pasta menu não estiver criada, crie)

O XML de menu segue alguns padrões que podem ser observados com mais atenção AQUI (Developers – Menu). Abaixo segue um exemplo aonde vamos criar dois menus, um na ActionBar e o outro fora da ActionBar.

<?xml version="1.0" encoding="UTF-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_delete"
          android:icon="@android:drawable/ic_menu_delete"
          android:title="@string/menu_delete"
          android:showAsAction="ifRoom"/>
    <item android:id="@+id/menu_edit"
          android:icon="@android:drawable/ic_menu_edit"
          android:title="@string/menu_edit" />
</menu>

Como visto acima cada item é um menu, veja o que cada atributo de “item” pode fazer:

android:id A ID do recurso que é exclusivo para o item, o que permite que o aplicativo ser capaz de reconhecer o item quando o usuário seleciona-lo.

android:icon Uma referência a um drawable para usar como ícone do item.

android:title Uma referência a uma string para usar como título do item.

android:showAsAction Especifica quando e como este item deve aparecer como um item de ação na ActionBar.

Onde os itens em seu menu de opções aparecerá na tela depende da versão para a qual você desenvolveu sua aplicação.

Na API 10 ou inferior o menu de opções sempre aparecera no rodapé do layout.

API 10

API 10

Na API 11 ou superior você tem a opção de inseri-las na action bar, por padrão essa opção não é ativada, caso queira, marque a tag android:showAsAction=”ifRoom” no seu item.

API 11

API 11

 

Para especificar o menu de opções para uma atividade você deve substituir o método onCreateOptionsMenu() ao substitui-lo você deve inflar o layout desejado através da classe MenuInflate.

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }

Para verificarmos qual item foi selecionado vamos substituir o método onOptionsItemSelected(MenuItem item):

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_edit:
                Toast.makeText(this, "MENU EDIT", Toast.LENGTH_LONG).show();
                return true;
            case R.id.menu_delete:
                Toast.makeText(this, "MENU DELETE", Toast.LENGTH_LONG).show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

Veja o resultado:

Exemplo OptionsMenu

Exemplo OptionsMenu

 

Projeto de Exemplo:(AQUI) DropBox

 

Fonte da imagem: http://goo.gl/Enpf4P
Fonte: http://goo.gl/ZRiA

Integrando o SDK Android ao NetBeans

android-and-netbeans

 

Nesta publicação vamos mostrar como integrar o Android SDK ao NetBeans. O NetBeans é uma excelente IDE e como muitas pessoas não se familiarizaram com a interface do Eclipse ela é a mais recomendada para programadores Java.

Vamos utilizar as seguintes ferramentas: NetBeans 7.3.1, Android SDK R22 (aprenda como instalar aqui)

A integração do Android ao Netbeans não passa de um Plugin. Para iniciar a instalação vamos fazer os seguintes passos: Continue reading

Android – Atualizando a interface gráfica com o Handler

android async task handler

O Handler é uma classe do pacote android.os, como o próprio nome já diz ele é um “Manipulador”. Quando você cria um novo Handler, ele é destinado à fila de mensagens/threads do thread que o criou. A partir daí toda mensagem que for destinada a ele será entregue para aquela fila de mensagens para serem executadas. Resumidamente ele fica responsável por entregar as mensagens para a fila de sua thread, executando-as em seguida.

Ele pode ser utilizado de duas maneiras: (1) para agendar mensagens e Threads a serem executadas e (2) para enfileirar uma ação a ser executada em um segmento diferente do qual foi enviada. Neste artigo vamos abordar somente a segunda maneira.

A seguir vamos mostrar quando e porque utilizar o Handler. Continue reading

Android – Como interceptar um SMS recebido (How Can i intercept an Incoming SMS)

android sms

 

Neste tutorial vamos mostrar como interceptar um SMS e tratar em uma Tela em primeiro plano. Isso é possível através do BroadcastReceiver dentro da Activity. Sendo muito útil quando você tem a necessidade de atualizar a Interface do aplicativo por SMS. (jogos baseados em SMS / robôs / etc).

O SMS no Android é interceptado por um BroadcastReceiver, nele podemos iniciar uma atividade, armazenar a informação recebida em um banco de dados, arquivos e realizar qualquer tipo de tratamento possível. Em nosso caso, ao recebermos uma SMS e intercepta-lá, vamos enviar um sinal de Broadcast para o S.O. e se nossa tela estiver aberta e ouvindo o broadcast enviado, vamos interceptar a mensagem e atualizar a interface com a informação enviada.

Neste projeto utilizei o sdk target version 14 e o sdk minimo 11. Utilizei uma Activity (SMSReceiverActivity.java) e o Receiver do SMS (SMSReceiver.java). A permissão necessária para interceptar o SMS é: “RECEIVE_SMS”

Veja como fica nosso arquivo Manifest.xml: Continue reading

Android – Como fazer uma chamada de telefone programaticamente? (How to make a phone call programatically?)

android-incoming-call

Para realizar ligações através de seu código, basta utilizar um Intent com a ação ACTION_CALL e passar os dados necessários, no caso, o telefone. Os dados são passados dentro de uma Uri, seguido do valor: “tel:telefone”.

Nota: não haverá restrições sobre quais aplicativos podem iniciar uma chamada,  esta intenção não pode ser usado para chamadas de emergência. Os aplicativos podem discar números de emergência utilizando ACTION_DIAL.

Primeiramente vamos adicionar a seguinte permissão: Continue reading

Android – Usando cores por xml (Using color in Android, by XML)

color_spectrum

Para definirmos cores padrões em nosso projeto, vamos criar um xml na pasta res/values/ com o nome “cores.xml”, esse nome não é importante para o Android, assim você pode criar uma organização de cores por arquivo xml no qual você tenha: “cores_telas.xml”, “cores_menus.xml”, etc.

Em nosso arquivo xml de cores vamos defini-lo da seguinte maneira:

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<color name="fundo">#A4C639</color>
	<color name="menu">#231344</color>
</resources>

Também é possível adicionar camada Alfa nas cores, para obter transparência. A camada alfa é adicionada antes da cor, segue o padrão: “#AARRGGBB”. (AA=alfa,RR=red,GG=green,BB=blue)
O valor de Alfa assim como os outros é em Hexa Decimal, que vai de 00(totalmente transparente) à FF(sem transparência).

Através deste site: http://redinput.com/colors você pode definir suas cores e gerar o arquivo.

Agora que definimos nossas cores, vamos utiliza-las, veja também outras maneiras de utilizar cor: Continue reading

Android – Implementar a câmera usando SurfaceView (How can I implement the Android camera)

android-camera-surfaceview

A classe Camera é usado para definir as configurações de captura de imagem, iniciar, parar a visualização, tirar fotos, e recuperar quadros para codificação de vídeo. Esta classe é um cliente para o serviço de câmera, que gerencia o hardware da câmera real.

Para acessar a câmera do dispositivo, você deve declarar suas permissões no manifest:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

Neste post vamos realizar uma implementação simples, sem orientações e alterações nas configurações da câmera.

Vamos utilizar o componente SurfaceView para exibir a câmera e um botão para tirar a foto. Nossa tela deve ficar da seguinte maneira: Continue reading