A TI deve confiar nos dispositivos móveis?
Guia de salários: gerentes de bancos de dados recebem até R$ 8,7 mil
Microsoft: Windows 8 chegará no final deste ano
Ah, Facebook, por que não consigo lhe largar?
4G Americas: saiba o que as operadoras devem fazer para atender demanda por dados
ATUALIZADA - Brasil: veja a lista de dispositivos que serão atualizados para Android 4.0
Google finaliza compra da Motorola Mobility, mas garante Android aberto
Microsoft libera kit de desenvolvimento do Kinect for Windows
Brasil: Galaxy S III deverá custar R$ 2.099
Novos rumores apontam para iPhone de quatro polegadas, diz jornal
Intel quer 300 mil desenvolvedores no Brasil
Google Knowledge Graph: como ele muda a pesquisa
Duas plataformas de desenvolvimento mobile dominaram completamente o mercado. Android e iPhone simplesmente derrubaram empresas tradicionais que mantinham liderança durante anos em seus segmentos. Estou falando da Nokia e da RIM (Research in Motion). Sendo que, o Android está um pouco a frente do iPhone em market share.
Neste pequeno artigo vou propor um desafio: ensinar o básico de Android em cinco conceitos que acredito serem os pilares do desenvolvimento para esta plataforma. São eles: Activity, Intent, Broadcast Receiver, Content Provider e Service.
Uma Activity pode ser entendida basicamente como uma tela da aplicação. Por exemplo, se tivermos que implementar um software com uma tela de login, uma tela de home que lista os últimos tweets e uma tela de sobre, teremos três Activity´s.
Uma Activity deve ser declarada no AndroidManifest.xml. Neste ponto temos uma consideração importante. Quando uma tela será a mesma onde o aplicativo será iniciado, a Acitivy deverá ser marcada com uma action android.intent.action.MAIN. Geralmente, esta mesma tela será chamada pelo ícone que estará visível para o usuário na listagem de aplicativos instalados, sendo assim, também devemos informar a category LAUNCHER. Veja o exemplo abaixo:
<activity android:name=”.MapaGPS” android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
Existem várias classes que são filhas de Activity na API do Android. Como por exemplo a MapActivity que é especialista na tarefa de mostrar instâncias de MapView. Temos ainda a ListActvitiy, um componente gráfico já preparado para uma extensa lista de itens, contendo um scroll e todos os métodos necessário para recuperação dos elementos inseridos na lista.
Já uma Intent pode ser resumida como a intenção de fazer algo comunicada ao próprio sistema operacional do Android. Ele próprio interpreta o que o aplicativo deseja fazer e toma as providências necessárias para atender ao pedido. Por exemplo, digamos que o objetivo seja criar um aplicativo que captura uma imagem da câmera e armazena a mesma em um álbum próprio de fotos. Bem, o primeiro passo certamente seria abrir a visualização da câmera ao usuário. Este passo é feito com uma intenção:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivity(intent);
Mais alguns exemplos de intenções e suas codificações no Android:
* Chamar browser:
Uri uri = new Uri(“http://www.mobilidadetudo.com”);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
* Efetuar uma ligação:
Uri uri = new Uri.parse(“tel:99999999”);
Intent intent = new Intent(Intent.ACTION_CALL, uri);
* Mostrar todos os contatos da agenda:
Uri uri = new Uri.parse(“content://com.android.contacts/contacts/”);
Intent intent = new Intent(Intent.ACTION_PICK, uri);
Um BroadcastReceiver atua como um interceptador de mensagens enviadas pelo sistemas operacional na forma de broadcast. Nada como um bom exemplo para elucidar uma frase um pouco complicada: Seu aplicativo deverá iniciar assim que qualquer ligação seja finalizada, ou ainda, quando um SMS chegar oriundo de um número específico. As duas situações se tornem possíveis com o uso do BroadcastReceiver.
public class SMSReceiver extends BroadcastReceiver {
public void onReceive(final Context context, Intent intent) {
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = “”;
if (bundle != null)
{
Object[] pdus = (Object[]) bundle.get(“pdus”);
msgs = new SmsMessage[pdus.length];
for (int i=0; i<msgs.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
if (msgs[i].getOriginatingAddress().toString.equals(“99999999”){
//SMS de um número específico chegou, inicie sua aplicação.
}
}
}
}
}
A classe Service nos permite criar um serviço que rodará em background. Por exemplo, ao criar um aplicativo de player de música, ou streaming de rádio, o usuário quer iniciar a mídia e sair do aplicativo, fazendo outras tarefas no smartphone enquanto acompanha sua música/rádio favorita. Neste caso, não podemos prendê-lo a uma Activity, mas sim, fazer com que o serviço esteja sendo executado mas sem tomar a atenção visual do usuário.
E por fim, mas não menos importante, temos o ContentProvider. O fornecedor de conteúdo (tradução literal) serve para compartilhar dados da nossa aplicação para o universo do sistema operacional Android. Para recuperar os dados de contatos, por exemplo, acessamos o ContentProvider que a agenda do smartphone possui.
Bem, acredito fielmente que ao aprender o conceito destes cinco pontos descritos aqui, o desenvolver já estará com os dois pés no mundo Android. Para se tornar um profissional completo, basta aprofundar cada um dos temas.
Boa sorte e bem vindo ao mundo Android.
Graduado em Ciência da Computação, pós-graduando em Web e analista de sistemas mobile na MobMidia | Grupo Pontomobi, Ricardo Ogliari é autor de dezenas de artigos que foram publicados em anais de congressos nacionais e internacionais, sites especializados e revistas. Palestrante em eventos nacionais e internacionais, como JustJava, Java Day, GeoLivre, ExpoGPS, FISL e FITE, sempre aborda temas relacionados a computação móvel. Neste espaço, discutirá sobre tecnologias, plataformas, mercado, ideias e linguagens presentes no mundo da mobilidade.
Conscientização e Dicas de Segurança da Informação
Anderson Santana
Artigo: Proteção de Dados
Dirty & Ugly Web
Paulino Michelazzo
Caiu na rede
Internet Upgrade
Victor Maeda
Ataques DDos aos bancos brasileiros.
Inovação, tecnologia e futurismo
Bráulio Medina
SIRI, MAJEL, EVI - Colhemos os frutos da semântica e inteligência artificial
Mundo RIA
Zaedy Sayão
Construindo Mobile Apps com Sencha Touch e Phonegap - Parte 1