Android
android-logobot.png

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.

system-architecture.jpg

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 ?

logo.gif

UCSal 2008-2 - Compiladores

  • Caio Pimenta Tuvo - moc.liamtoh|ovutoiac#moc.liamtoh|ovutoiac
  • André Teixeira - moc.liamtoh|avlisw_erdna#moc.liamtoh|avlisw_erdna
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License