quinta-feira, 23 de outubro de 2008

Desenvolvendo para smartphones



Tela do Python no smartphone Nokia N95

Aprenda a desenvolver aplicações em Python para o sistema Symbian, que roda em smartphones Nokia.

Este tutorial está dividido em partes que serão publicadas neste blog. Foi especialmente escrito por Osvaldo Santana, sócio-fundador da Associação Python Brasil e sócio da Triveos Tecnologia. Na primeira etapa, você aprenderá como instalar o interpretador Python no telefone Nokia com Symbian. Nas próximas etapas colocaremos a mão na massa para desenvolver uma aplicação, explicando algumas ferramentas e bibliotecas.

Antes de partirmos para a ação, apresentaremos os atores envolvidos:

Python - Linguagem de programação dinâmica que implementa vários paradigmas de desenvolvimento. Fácil de aprender e usar, foi criada em 1991 por Guido van Rossum. O nome da linguagem é derivado do grupo humorístico britânico Monty Python.

Série 60 (S60) - Linha de celulares smartphones da Nokia que vem equipada com o sistema operacional Symbian. Atualmente existem 3 edições da Serie 60, e em cada uma delas uma versão diferente do Symbian é usada. Dentro de cada edição ainda existe uma subdivisão de pacotes de recursos (Feature Packs) para distinguir entre dispositivos que possuem determinadas funções (Wi-Fi, Bluetooth, câmera, etc.). Verifique a lista completa, para identificar quais recursos você tem. No tutorial, usaremos o Nokia N95 3rdFP3.

Fórum Nokia - Portal para desenvolvedores de software para celulares da Nokia. Lá é possível encontrar o SDK para desenvolvimento C++ e Java para a Série 60 bem como uma coleção de artigos, tutoriais, exemplos, ferramentas e recursos para desenvolvedores.

Python para S60 - Projeto open source custeado pela Nokia. Já foi suportado oficialmente pela Nokia, mas atualmente segue sua vida no mundo open source. O Python para S60 utiliza a versão 2.2 do Python (versão antiga do Python).


Instalando o Python

Para instalar o PyS60 no seu smartphone, você precisa baixar a versão adequada do PyS60, conforme a edição e o pacote de recursos no Sourceforge. Você precisará de dois arquivos:

PythonForS60_1_4_4_VERSAO.SIS - Esse pacote tem o interpretador do Python propriamente dito.

PythonScriptShell_1_4_4_VERSAO.SIS - Esse pacote disponibiliza a opção "Python" no menu "Aplicativos" do seu celular e ainda acompanha alguns exemplos de código.

Agora é só usar o Nokia PC Suite para instalar esses pacotes em seu celular. A opção "Python" irá aparecer no seu menu de aplicações.


Rodando aplicações de exemplo

Ao clicar no ícone Python, acione Options e depois Run Script. Selecione um dos scripts de exemplo e clique em OK.





Um tutorial para criar o primeiro aplicativo em Python para rodar no sistema Symbian.

Na primeira parte desta série instalamos o Python e rodamos alguns programas. Agora, vamos criar um primeiro aplicativo de exemplo. Em seguida, explicaremos quais são as bibliotecas e daremos uma visão geral de como é estruturado o Python portado para o sistema Symbian. O autor desta segunda parte, assim como da anterior, é Osvaldo Santana.

Olá, mundo

Para desenvolver aplicativos, você pode utilizar o editor de texto de sua preferência. Abra o editor e digite:

import appuifw

from graphics import *

appuifw.note(u"Olá, Mundo!", "info")


Por enquanto salve o arquivo com o nome ola_mundo.py. Utilizando o Nokia PC Suite, localize o diretório Python e copie o arquivo para lá. Lembre que esta transferência também pode ser feita por Bluetooth ou USB.

Para executar o programa, assim como fizemos na primeira parte deste tutorial, você deverá seguir para “Run Script” e selecionar o arquivo ola_mundo.py que criamos.

Agora que já sabemos como fazer um pequeno programa para o PyS60 e como enviá-lo para o celular e executá-lo, chegou o momento de apresentar uma visão mais aprofundada das funções disponíveis para o desenvolvimento de aplicações Python para dispositivos móveis.


Os módulos do PyS60

Devido a limitações de memória e processamento, pequenas mudanças no interpretador fazem com que o garbage collector do Python não execute a coleta de lixo de objetos que contêm referências circulares (A referencia B, que referencia A). Portanto, é importante tomar cuidado para que esse tipo de situação não ocorra. Além disso, o desenvolvedor precisa ficar atento para sempre "desligar" os recursos que não estão sendo usados. Isso é fundamental para que haja uma economia considerável de bateria.


Eventos e callbacks


Para facilitar a vida do programador no desenvolvimento de aplicações que consumem poucos recursos, os módulos Python específicos para a plataforma S60 usam e abusam do conceito de eventos e callbacks.Esse conceito é simples: a aplicação fica "dormindo" até que um evento ocorra (tecla pressionada, sinal de relógio, etc.) e dispare uma função predeterminada (callback).


Funções assíncronas


Além do conceito de eventos e callbacks descrito acima, os módulos que acompanham o PyS60 possuem várias funções que se comportam de maneira assíncrona, ou seja, elas retornam antes de terminar de executar a sua tarefa.

Nesses casos, é bastante comum que essas funções executem uma chamada a uma função callback para 'avisar' que sua tarefa foi concluída.

Módulos específicos do PyS60

e32
Fornece acesso às funções específicas do sistema operacional Symbian que não possuem relação direta com a interface com o usuário. Neste módulo você encontrará funções que retornam a versão do PyS60, se seu programa está ou não rodando no emulador, a lista de todos os drives disponíveis, além de funções e objetos que lidam com locks e threads, entre outras coisas.

sysinfo
Este módulo fornece funções que retornam dados do aparelho, tais como qual o perfil escolhido (ex: geral, reunião, silencioso), o estado da carga da bateria, tamanho da tela, espaço livre em disco, IMEI, potência do sinal da rede telefônica, tipo de toque, informações sobre a memória do aparelho, versão do firmware etc.

appuifw
Neste módulo você encontra tudo relacionado à interface gráfica com o usuário (GUI). É um dos módulos mais importantes do PyS60. O appuifw é utilizado em nosso exemplo.

graphics
Módulo com funções gráficas para manipulação de imagens, desenho de primitivas, impressão de textos em imagens, funções para tirar screenshots etc. Mantém total interoperabilidade com os módulos camera e appuifw.

camera
Um dos módulos mais interessantes do PyS60 por sua facilidade de uso. Este módulo oferece funções para manipular a(s) câmera(s) do celular afim de gerar fotos ou vídeos.

gles
Biblioteca que fornece uma API compatível com OpenGL/ES para desenho de gráficos 3D com aceleração (alguns dispositivos da S60 possuem um chip para aceleração gráfica 3D).

sensor
Este módulo dá acesso aos sensores de aceleração, rotação e tapping (tocar com o dedo na tela do celular aciona esse sensor). Vale lembrar que apenas alguns modelos de celulares S60 dispõem desses sensores.

audio
Esse módulo permite a manipulação total do sistema de áudio do aparelho. Com ele é possível manipular tanto o alto-falante externo (tocando um MP3, por exemplo) quanto o áudio de uma ligação telefônica (emitir um som no meio de uma conversa ou até mesmo gravá-la).

telephone
Funções de telefonia, tais como fazer uma ligação ou atender uma chamada, estão neste módulo.

messaging
Este módulo tem as funções responsáveis pelo envio de SMS e MMS.

inbox, contacts, calendar
Manipulam, respectivamente, a caixa de entrada de mensagens (SMS/MMS), os contatos da agenda e os eventos de calendário. Esses módulos são extremamente poderosos.

location, positioning
Módulos de localização que utilizam respectivamente os dados da rede GSM e dados do GPS (interno ou externo) do aparelho.

e32db
Minibanco de dados relacional que pode ser manipulado como o uso de SQL (será substituído pelo sqlite em versões futuras do PyS60).

socket
Módulo que já acompanha o Python e recebeu adições para suportar conexões via Bluetooth.

Para mais informações sobre os módulos e funções disponíveis, consulte o manual.

Na próxima parte, escreveremos uma aplicação que tira foto e a envia por MMS.



Nenhum comentário: