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.