
Introdução
Depois de meses de espera pela entrada do Google na tecnologia de dispositivos móveis a Open Handset Alliance, um grupo de mais de 30 empresas, compradas pelo Google, e outras que fazem parte da aliança, entre elas Samsung, LG, HTC, Motorola e NVIDEA, lançam o Android, um sistema operacional para dispositivos móveis com a tecnologia Google que todos conhecem.
Resumo
Este artigo da uma breve apresentação ao sistema operacional open source da Google, o Android, e as principais ferramentas desta tecnologia. Destacando a sua arquitetura onde estão as suas bibliotecas, os frameworks mais utilizados, os aplicativos-chave e o kernel do sistema. Relacionando-o também com outros sistemas da mesma plataforma, exibindo seus recursos e exemplos práticos de sua utilização.
Diferenças entre o Android e outros sistemas
Atualmente existem três principais plataformas para celulares e Smartfones são elas: o SYMBIAN que originou o S60 (desenvolvido pela Nokia e encontrado também em aparelhos da LG, Samsung e alguns outros fabricantes) e também ao UIQ, encontrado em aparelhos da Sony-Ericsson e da Motorola, e o WINDOWS MOBILE, que é encontrado em muitos Smartphones e o PalmOS.
Entre os três o SYMBIAN é o mais bem sucedido, devido ao grande volume de aparelhos em que ele é usado. Além disso tem como ponto forte o fato de ser multitarefa e foi desenvolvido para aparelhos que não dispõem de muitos recursos de hardware.
O WINDOWS MOIBILE tem preferência de alguns pela semelhança com produtos da versão Windows para desktop e sua integração com estes aplicativos (como exemplo o Outlook). Uma desvantagem é que ele traz uma sobrecarga para o desempenho, por isso usado em aparelhos que possuem bom processamento.
Hoje em dia, a principal área de desenvolvimento para dispositivos móveis são os jogos em Java, o que é triste se for considerado o potencial dos aparelhos atuais, que combinam processadores rápidos com conexões via EDGE ou 3G à Internet.
O Android é a resposta para esse problema. Ele é um sistema Open Source, que pode se tornar a Plataforma dominante entre os Smartfones dentro de poucos anos. Esse curto tempo se justifica, pois agrada a quatro públicos com interesses distintos: os fabricantes de celulares, os desenvolvedores, os fabricantes de chips (incluindo a Intel) e tem tudo para agradar também os consumidores.
Agrada os fabricantes, pois é um sistema open-source, que poderá ser usado sem custo nos aparelhos, ao contrário de sistemas como o Symbian e o Windows Móbile, usados atualmente. Agrada os desenvolvedores pois tem uma SDK aberta, que permite desenvolver aplicativos com facilidade, diferente de plataformas fechadas, como o iPhone.
O interesse pelo Android também alcança os fabricantes de chips, pois adiciona novos recursos aos celulares, o que aumentará a procura por celulares com processadores mais rápidos, tendo como conseqüência o desenvolvimento e a venda de produtos (a Intel está particularmente interessada nas perspectivas para o “Intel Atom”). Como o Sistema é open source, existe a possibilidade de uso em diferentes plataformas, seguindo o exemplo do Linux, que roda em Micros PC, Clusters de Servidores e Smartphones.
Esse conjunto de fatores pode acarretar em aparelhos mais baratos e melhores, agradando também aos consumidores.
Entendendo o Google Android
A Arquitetura Android
Dividida em quatro camadas estão: Kernel GNU Linux, bibliotecas, framework para aplicações e, finalmente, as aplicações.
Aplicações
Junto com o Andróid vai um conjunto de aplicações fundamentais. São elas:
- Um cliente de e-mail;
- Programa de SMS;
- Agenda;
- Mapas;
- Navegador;
- Contatos entre outros.
Bibliotecas
O Android inclui um conjunto de bibliotecas em C/C++ utilizadas por componentes do sistema. Abaixo, algumas das principais bibliotecas:
- System C library – uma implementação derivada da biblioteca C padrão sistema (libc) do BSD sintonizada para dispositivos rodando Linux.
- Media Libraries – baseado no PacketVideo’s OpenCORE; as bibliotecas suportam os mais populares formatos de audio e video, bem como imagens estáticas.
- Surface Manager – gere o acesso ao subsistema de exibição bem como as múltiplas camadas de aplicações 2D e 3D;
- LibWebCore – um web browser engine utilizado tanto no Android Browser quanto para exibições web.
- SGL – o engine de gráficos 2D
- 3D libraries – uma implementação baseada no OpenGL ES 1.0 APIs; as bibliotecas utilizam aceleração 3D via hardware (quando disponível) ou o software de renderização 3D altamente otimizado incluído no Android.
- FreeType – renderização de fontes bitmap e vector
- SQLite – um poderoso e leve engine de banco de dados relacional disponível para todas as aplicações
Linux Kernel
Utiliza a versão 2,6 do kernel do Linux para os serviços centrais do sistema, tais como segurança, gestão de memória, gestão de processos, etc. O kernel também atua como uma camada de abstração entre o hardware e o resto do software.
Recursos
- Um dos recursos demonstrado foi o “modo bússola”: com o movimento físico do próprio smartphone, é possível navegar pelo ambiente 3D do Google Maps Street View.
- Outra novidade exibida pelo Google foi o desbloqueio do celular sem digitação da senha, apenas com um comando diferenciado de toque na tela.
- Foi demonstrada também uma versão móvel do clássico game “Pac Man”, vários são os aplicativos que utilizam do movimento físico do aparelho para sua interatividade, um otimo exemplo é o jogo do labirinto que até a sua vibração sem direção e sentidos especificos com o movimento.
- Bluetooth, EDGE, 3G, e WiFi
- Camera, GPS, compasso, e acelerômetro
- Suporte multimídia para audio, video e formatos de imagem (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
Android x Compiladores
Um compilador nada mais é do que um programa que transforma uma linguagem fonte de alto nível em uma linguagem objeto, sendo está de baixo ou alto nível, que será posteriormente executada. O Android pode ser considerado o alto nível por se tratar da parte que se comunica com o usuário, sendo as interações entre ambos transformadas em código, e executadas pelo próprio hardware do dispositivo móvel, causando a reação esperada pela ação do usuário manipulador.
Exemplo prático de código Java utilizado no Android
CameraPreview.java
samples/ApiDemos/src/com/example/android/apis/graphics/
/*
* Copyright (C) 2008 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.example.android.apis.graphics;
import android.app.Activity;
import android.content.Context;
import android.graphics.*;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.PictureDrawable;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import java.io.*;
public class Pictures extends GraphicsActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new SampleView(this));
}
private static class SampleView extends View {
private Picture mPicture;
private Drawable mDrawable;
static void drawSomething(Canvas canvas) {
Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);
p.setColor(0x88FF0000);
canvas.drawCircle(50, 50, 40, p);
p.setColor(Color.GREEN);
p.setTextSize(30);
canvas.drawText("Pictures", 60, 60, p);
}
public SampleView(Context context) {
super(context);
setFocusable(true);
setFocusableInTouchMode(true);
mPicture = new Picture();
drawSomething(mPicture.beginRecording(200, 100));
mPicture.endRecording();
mDrawable = new PictureDrawable(mPicture);
}
@Override protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
canvas.drawPicture(mPicture);
canvas.drawPicture(mPicture, new RectF(0, 100, getWidth(), 200));
mDrawable.setBounds(0, 200, getWidth(), 300);
mDrawable.draw(canvas);
ByteArrayOutputStream os = new ByteArrayOutputStream();
mPicture.writeToStream(os);
InputStream is = new ByteArrayInputStream(os.toByteArray());
canvas.translate(0, 300);
canvas.drawPicture(Picture.createFromStream(is));
}
Video demonstração de um aparelho celular com a tecnologia Google Android
T-Mobile G1 Telefone com Android
Fontes:
http://code.google.com/android/what-is-android.html
http://forum.android.pro.br/
http://www.google.com.br - Se procura uma peça do google por que não procurar no próprio Google ?

UCSal 2008-2 - Compiladores
- Caio Pimenta Tuvo - moc.liamtoh|ovutoiac#moc.liamtoh|ovutoiac
- André Teixeira - moc.liamtoh|avlisw_erdna#moc.liamtoh|avlisw_erdna





