Desenvolvendo Aplicativos Python para Symbian OS
Introdução à programação Python para celulares Symbian S60 - Parte 01
Marcel Pinheiro Caraciolo
O número de telefones inteligentes (smartphones) no mercado vem crescendo gradativamente nos últimos anos, devido, principalmente, às novas maneiras de como as pessoas estão se comunicando, interagindo e trabalhando. Há uma necessidade por provimento de serviços e acesso às informações de forma eficiente e rápida, especialmente no âmbito de dispositivos móveis. Existem, atualmente, mais de bilhões de usuários vinculados a alguma operadora telefônica móvel e a tendência é aumentar ainda mais esses números. Este aumento do número de aparelhos móveis provoca uma demanda por novos serviços e aplicativos em variadas plataformas nos quais eles são desenvolvidos e distribuídos. Hoje, o telefone móvel é considerado como um objeto de posse "pessoal e individual", disponibilizando ao usuário recursos multimídia, listas de tarefas, álbuns de fotos e vídeos capturados e acesso a internet.
Desde o início desta tendência, diversos desenvolvedores de software começaram a escrever aplicativos para plataformas móveis, a fim de lucrar em cima desse novo mercado emergente. Driblando as desvantagens desse vasto campo de possibilidades na área de dispositivos móveis que são bem conhecidas: poder de processamento limitado, telas reduzidas, limitações de memória, dentre outros fatores que passam a exigir uma maior habilidade por parte dos desenvolvedores para a construção de aplicativos eficientes e usáveis.
Diferentes plataformas foram estabelecidas por diversos fabricantes de dispositivos móveis. Algumas desenvolveram o seu próprio sistema operacional, enquanto outras decidiram utilizar sistemas operacionais de terceiros. Essas plataformas podem permitir aos desenvolvedores utilizarem a API nativa do sistema para acesso às diversas funcionalidades e recursos dos aparelhos no desenvolvimento dos seus aplicativos. Dentre esses sistemas, o Symbian OS tornou-se uma das principais plataformas neste mercado de smartphones. Ela é um sistema operacional proprietário para dispositivos móveis desenvolvido pela Symbian e custeado por um consórcio formado por empresas como Nokia, Sony Ericsson e Samsung. Atualmente, ela pertence inteiramente à Nokia e existem informações de que o código fonte dele será disponibilizado como open-source. Mais informações, podem ser encontradas no site oficial do Symbian.
Grande parte dos aparelhos Symbian é agrupado em plataformas que compartilham certas características, tais como resolução, tamanho de tela, processadores e versão do sistema operacional. Esse fato auxilia o desenvolvedor, pois generaliza a plataforma alvo, aumentando assim o número de dispositivos alcançados por uma determinada aplicação. As plataformas mais populares são Série 60, Série 80, Série 90 e UIQ. A plataforma Série 60, além de ter mais fabricantes licenciados e o maior número de aparelhos lançados é também a mais popular no Brasil. Tanto que a Nokia desenvolveu a plataforma de desenvolvimento Python direcionados a esses celulares devido ao grande portfólio de aparelhos com essa versão do Symbian embarcada. Por essas razões o desenvolvimento abordado neste artigo enfoca os aparelhos Série 60.
Symbian S60
O sistema operacional Symbian S60 é um sistema multitarefa que possui uma interface gráfica intuitiva, além de suportar várias plataformas para desenvolvimento de aplicativos móveis. Vale destacar a plataforma Symbian C++, que é uma variação da linguagem C++ usada também no desenvolvimento do sistema operacional, e tem acesso a diversos recursos do celular. Outro exemplo é a plataforma Java, que é representada por uma máquina virtual Java compatível com JavaME/MIDP. Todas essas plataformas de desenvolvimento de aplicações para um aparelho Symbian possuem várias vantagens e desvantagens caracterizadas por grau de rapidez, acesso a funcionalidades/recursos do aparelho e complexidade da linguagem de programação.
A maior dificuldade encontrada foi a necessidade de um estudo prévio aprofundado dessas plataformas e suas particularidades. Isso se tornou dispendioso, já que o foco do desenvolvimento de aplicativos móveis deveria ser em fácil aprendizado e rapidez na produção de aplicativos. A Nokia, então, reconheceu essa necessidade de uma linguagem que oferecesse aos desenvolvedores um meio que pudesse implementar aplicações úteis sem a obrigação de gastar meses aprendendo Java ou C++ e mais além os detalhes técnicos envolvidos no sistema operacional Symbian. O resultado foi o Python para S60 (PyS60), uma linguagem de script portada para celulares Symbian OS.
A linguagem além de ser bastante simples, através da rápida produção de aplicativos, oferece novas oportunidades de desenvolvimento de aplicativos móveis. Não somente os iniciantes na plataforma irão beneficiar-se dessas oportunidades, como também o desenvolvedores experientes que poderão usufruir desse meio para desenvolvimento ágil e poderoso de aplicativos móveis.
Este artigo está dividido em duas partes. Nesta primeira parte discutirei algumas características da linguagem de programação Python e da plataforma Python para série 60. E em seguida, iremos descrever como montar um ambiente de desenvolvimento de aplicações para este sistema. Na segunda parte, descreverei alguns recursos disponibilizados pela plataforma PyS60 através de aplicações e exemplos simples que ilustrarão os conceitos apresentados.
Python
Python é uma linguagem de programação de script orientada a objetos, disponível para diversas plataformas e ambientes. O código gerado é interpretado em tempo de execução, diferentemente das linguagens compiláveis como C++, que é compilada para a plataforma-alvo antes da sua execução. A linguagem em questão permite que programas sejam escritos de forma compacta e legível, possibilitando o rápido aprendizado. Os códigos escritos em Python são geralmente menores em comparação a códigos equivalentes em C++ ou Java devido ao seu mecanismo de abstração de tipos o qual permite expressar operações bastante complexas com apenas um comando. Os comandos são agrupados por indentação e não há necessidade de declaração de variáveis.
Um pequeno trecho de código é ilustrado na Listagem 1, onde está demonstrado a definição de uma função e em seguida a sua chamada para execução. Como pode ser observado, as variáveis são usadas sem a necessidade de declaração explícita e a delimitação de um bloco de código (while-loop) é definido pela indentação sem a necessidade de chaves ({ }) comuns em linguagens de programação como Java e C++.
Listagem 1. Definição de uma função em Python
1. #define uma função
2. def exponencial (n,exp):
3. a = 1
4. while a < exp:
5. n = n*n
6. a = a+1
7. print n
8.
9.#chamada da funcao
10.exponencial(2,3)
Como mencionado acima, Python é uma linguagem orientada a objetos e permite a definição de estrutura de dados e classes. A Listagem 2 ilustra a definição de uma simples classe com um atributo (idade) e uma função (nome). A instanciação do objeto é demonstrada mais abaixo no código (Linha 7).
Listagem 2. Definição de uma classe em Python
1. #define uma classe
2. class Pessoa:
3. idade = 23
4. def nome(self):
5. return ‘Ola Pessoa!’
6.
7. x = Pessoa()
Python para S60
Python para S60 é uma iniciativa da Nokia de portar a linguagem Python para smartphones Symbian Série 60. A plataforma Série 60 provê uma interface gráfica e outros recursos para celulares Nokia baseados no sistema operacional Symbian OS e um kit de ferramentas de desenvolvimento para esta plataforma. Atualmente existem quatro versões (1nd, 2nd, 3nd, 5nd), além de diferentes kits de funcionalidades (feature packs) que se diferenciam pela época de lançamento e inclusão de novos recursos (upgrades) dependendo das capacidades técnicas do aparelho. Os mais recentes smartphones da Série 60 já vêm com um conjunto de aplicativos pré-instalados e recursos de multimídia e rede acessíveis através de um conjunto de bibliotecas pré-definidas (APIs). Com o Python para S60, os desenvolvedores podem usufruir de quase todo o poder que a plataforma Série 60 oferece.
Desde 2006, ele se tornou um projeto open-source da Nokia, e todo o código-fonte da plataforma foi disponibilizado para estudo. Este foi um dos grandes fatores que impulsionaram o sucesso da plataforma, visto que, os desenvolvedores puderam analisar os códigos, encontrar bugs e falhas, enviar sugestões e novas funcionalidades para as próximas versões do PyS60. Na época em que esse artigo estava sendo escrito, o PyS60 encontrava-se na versão 1.4.4, disponibilizado para download, hospedado no site SourceForge o interpretador a ser instalado no celular, o kit de desenvolvimento (SDK) para testes no emulador e a documentação contendo informações sobre API e especificações do projeto.
Até a versão 1.4.4, o Python para Série 60 baseava-se na versão do Python 2.2.2. Ele suporta diversos módulo de biblioteca padrão de Python, que cobre estruturas de dados, tipos, exceções e outras especificações básicas da linguagem. Módulos e extensões específicas para plataforma móvel foram desenvolvidas para ter acesso aos recursos dos aparelhos S60, sendo assim adicionadas aos módulos padrões de Python. Há duas extensões básicas pré-definidas no PyS60. O módulo e32 que implementa toda a interface de comunicação de serviços da plataforma S60 e não possui relação direta com a interface do usuário. Neste módulo você irá encontrar funções que retornam a versão do PyS60, informações de carga de bateria, se seu programa está rodando no emulador, lista de todos os drivers disponíveis, funções e objetos que lidam com locks, threads, etc. O outro módulo, appuifw, é utilizado para manipular os eventos e criar componentes na interface do S60. Além desses extensões básicas, há outros módulos que disponibilizam a API necessária para acesso de recursos como mensagens de texto (SMS), câmera, áudio, lista de contatos e pintura na tela. Mais detalhes sobre esses módulos podem ser encontrados na documentação disponível para donwload junto ao interpretador e kit de desenvolvimento.
O desenvolvimento com PyS60 é baseado no kit de desenvolvimento para plataformas Série 60 (S60 SDK), que é geralmente usado para escrever os códigos nativos em C++ para o Symbian OS. O SDK vem junto com um emulador, no qual os aplicativos podem ser testados. Apesar de existir um emulador para celulares S60 no SDK C++ da Nokia, ele ainda não implementa todas as funcionalidades disponíveis em um aparelho real (tais como câmera, comunicação via GSM ou conectividade Bluetooth), portanto, se possível, é recomendável dispor de um aparelho S60 real se seu aplicativo requerer acesso a essas funcionalidades.Há duas alternativas de testar os scripts desenvolvidos no PC. Uma alternativa é usar o emulador do aparelho S60. A segunda seria enviar os scripts diretamente para o aparelho através de alguma comunicação PC-Celular (Bluetooth, Cabo de dados, etc). Em ambos os casos o pré-requisito é ter instalado o interpretador PyS60.
Existem diversas ferramentas de desenvolvimento para a linguagem Python padrão, mas nenhuma delas ainda específicas para Python S60. Por essa razão, para a criação e edição de códigos neste artigo, utilizaremos o caminho mais simples que é um editor de textos comum ou seu editor favorito (Ex: Notepad++, Context, etc.). Apenas lembrando que os scripts salvos devem ser salvos no formato padrão dos arquivos python (.py).
Na próxima sessão deste artigo serão descritos a instalação e configuração do ambiente de desenvolvimento em Python para S60 no ambiente Windows. Para mais informações sobre desenvolvimento para PyS60 tanto no Linux quanto no MAC OS X, visite o site do PyS60.
Instalando SDK/Emulador
Para iniciar o desenvolvimento na plataforma PyS60, é necessário ter instalado o SDK (Kit de desenvolvimento) para aparelhos S60. O Python para S60 está disponível para S60 2nd e 3rd Edição, mas é recomendável instalar a versão do SDK apropriada de acordo com o aparelho-alvo a se desenvolver. Por exemplo, se for desenvolver para o Nokia N73, deve-se instalar SDK Symbian 3rd Edition, que é a versão do sistema operacional instalada neste aparelho.
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 Feature Packs para distinguir entre dispositivos que possuem determinadas funcionalidades (ex. Wi-Fi, Bluetooth, Câmera, etc.). Uma lista completa das edições, FPs e dispositivos podem ser obtidas para consulta em http://www.forum.nokia.com/devices/matrix_all_1.html.Se você já dispõe de um celular S60 a instalação do SDK é opcional. O SDK C++ da Nokia (link) depende da instalação do ambiente Perl em seu computador (De preferência a versão 5.6.1 que é a mais estável (link) e da máquina virtual Java (JRE) a partir da versão 1.4 (link).
Depois de ter baixado o SDK C++ do site Forum Nokia é chegado o momento de instalá-lo. Para isso basta descompactar o arquivo .zip que você acabou de baixar e rodar o instalador (setup.exe) que está dentro dele e seguir as instruções. Se você não alterou o local padrão de instalação é provável que você tenha agora um diretório C:\Symbian em seu computador. Agora que você já instalou o SDK C++ e o emulador em seu computador chegou o momento de fazer o download e instalar o interpretador PyS60 para ser executado dentro do emulador de acordo com a versão do SDK instalada no PC. Para isso é só baixar o PythonForS60_1_4_4_SDK_XXX.zip (substituindo o XXX pela versão do SDK que você havia baixado). Vale salientar que para as versões do SDK Symbian 3rd Edition, Feature Pack 1 (FP1) ou Feature Pack (FP2), o kit de desenvolvimento para Python é o mesmo: 3rd Edition.
É recomendável também fazer o download da documentação do PythonS60 em formato pdf, que contém toda a API disponível para consulta durante o desenvolvimento de novos aplicativos.
Para instalação do PyS60 SDK, é necessário extrair seus arquivos em uma pasta. Os arquivos extraídos consistem em um arquivo compactado .zip (sdk_files.zip) e um script de desinstalação do emulador. O sdk_files.zip contém toda a estrutura necessária para que o emulador do PythonS60 possa ser executado e deve ser extraída na pasta onde está instalado o SDK do Symbian S60. Sugere-se que antes de mover os arquivos diretamente, extraia todos os arquivos em uma pasta temporária e depois mova todos os diretórios que estão dentro da pasta epoc32 (descompactada) para o diretório correspondente dentro do S60 SDK (Ex:C:\Symbian\X.X\S60_3rd_FP1\Epoc32 ou o diretório equivalente dependendo da versão de SDK que você instalou). Por exemplo, para o SDK 2nd FP2, deve-se extrair o sdk_files.zip para o diretório “c:\symbian\8.0a\s60_2nd_fp2\epoc32”. Já para o 3rd Ed FP2 o diretório padrão seria: "C:\Symbian\9.3\S60_3rd_FP2_Beta\epoc32".
Para testar a instalação do PyS60 SDK, inicie o emulador S60 (S60 Developer Tools -> nRdEditionSDK -> C++ Beta -> Emulator). Aguarde até que o emulador exiba todos os ícones na tela. Com o emulador em execução, navegue até a pasta Installed (Figura 1) através dos botões direcionais do aparelho representado pelo emulador. Clique no botão central do telefone e navegue até o aplicativo Python (Figura 2). Para iniciar o interpretador Python, clique em Options -> Open.
Figura 1. Menu Inicial do S60 Figura 2. Aplicativo Python
O interpretador do Python entrará em execução, exibindo algumas informações sobre a versão e configuração até chegar ao console >>, que significa que o emulador aguarda os comandos do usuário. Existem diversos aplicativos prontos para execução que vê junto ao PyS60 SDK. Para testar um deles, clique em Options -> Run Script, selecione um dos aplicativos e aguarde o aplicativo demonstração ser executado (Figura 03).
Instalando no Celular
Para instalar o PyS60 no seu celular você precisa baixar a versão adequada do PyS60 para seu celular. Será necessário baixar dois arquivos com a extensão SIS:
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 além de trazer alguns exemplos de código.
Agora é só usar o Nokia PC Suite para instalar esses pacotes em seu celular que a opção "Python" irá aparecer no seu menu de aplicações (Figura 4) e (Figura 5).
Figura 4. Menu "Aplicações" Figura 5. Tela inicial do Python
Na próxima sessão deste artigo, iremos desenvolver nosso primeiro aplicativo em Python para S60 e descrever o ciclo de desenvolvimento envolvido.
Testando programas PyS60
Como primeiro exemplo, implementaremos um pequeno programa chamado "olaMundo.py". Ao ser executado, uma mensagem de saudações com o nome provido pelo usuário é exibida na tela. Para isso, abra um novo arquivo no seu editor de textos e digite o código da Listagem 4:
Listagem 4. Definição Olá Mundo
1. #Exemplo 01 - olaMundo.py
2. import appuifw
3. data = appuifw.query(u"Digite o seu nome:", "text")
4. appuifw.note(u"Olá " + data + " !", "info")
Salve o arquivo no diretório "\...\S60_3rd_FP2_Beta\epoc32\winscw\c\python” (esse caminho pode variar conforme a versão ou diretório de instalação do seu S60 SDK. No aparelho celular o equivalente seria: C:\Python ou E:\Python - no caso do seu celular possuir um cartão de memória). É nesse diretório que se encontram os códigos-fonte dos aplicativos demonstração e onde deve-se colocar os scripts desenvolvidos para que o emulador possa reconhecê-los. Lembrando também que o formato salvo do arquivo deve ser .py (Exemplo: HelloUser.py).
O próximo passo é abrir o emulador do Symbian, executar o emulador Python e selecionar o script desenvolvido. Uma tela semelhante ao da Figura 6 será exibida, pedindo ao usuário para digitar o seu nome. Após a edição e confirmação dos dados, uma caixa de diálogo com uma mensagem de saudação e o nome provido pelo usuário será exibida (Figura 7). Com esses passos, seu primeiro aplicativo em Python para S60 foi desenvolvido! Caso a caixa de diálogo não seja exibida, procure por erros de digitação ou sintaxe no seu código.
Figura 6. Tela Inicial do HelloUser.py Figura 7. Tela Final do HelloUser.py
Agora, vamos entender o código que desenvolvemos. Na linha 2, encontra-se o comando import que permite que você use o módulo appuifw na sua aplicação. Esse módulo permite que você utilize componentes de interface gráfica do seu celular. Na linha 3 você define o diálogo de entrada de dados, ou seja, o pop-up com uma legenda e um campo de entrada de dados para ser exibido na tela, no nosso exemplo: u“Digite o seu nome:”. O u"" nessa string de texto indica que essa string é codificada como unicode (padrão de exibição de caracteres). O segundo argumento desse método define o formato da entrada dos dados, que nesse caso são caracteres alfa-numéricos (“text”). Na linha 4, é feita a chamada do método note do módulo appuifw que fica responsável por exibir um alerta com a informação (“Olá” + texto de campo de entrada) na tela assim que você confirmar a edição do texto no pop-up. Vale destacar que esse método recebe 2 parâmetros: O texto de caracteres (Unicode) a ser exibido na tela e o tipo de alerta que você quer que apareça (nesse exemplo: 'info' que significa que é um alerta com alguma informação).
Podemos observar que o desenvolvimento de aplicativos em PyS60 é bastante simples e rápido, visto que, com apenas três linhas de códigos conseguimos construir nosso primeiro aplicativo. Bem diferente de outras linguagens como Symbian C++ que requer uma complexa estrutura de diretórios e arquivos e além disso, da alta complexidade da linguagem em si.
Agora que já sabemos como fazer um pequeno programa em PyS60, enviá-lo para o celular/emulador e executá-lo, iremos na segunda parte deste artigo abordar, com exemplos de aplicativos, de forma mais aprofundada as funcionalidades disponíveis para o desenvolvimento de aplicações Python para dispositivos móveis.
Até a próxima!
Referências
http://sourceforge.net/projects/pys60