GDH Press: Blog » Programando em Python com o PyS60
 
RSS

Programando em Python com o PyS60

28/12/2008 – 20:05

O PyS60 é, como o nome sugere, uma versão do Python que roda sobre o S60, oferecendo acesso aos módulos e recursos do sistema. Ele é uma boa opção de ferramenta de programação para smartphones, pois usa uma sintaxe simples, sem grandes diferenças em relação ao interpretador Python para PCs.

Você pode baixar o interpretador Python para o S60 através do:
http://opensource.nokia.com/projects/pythonfors60/

… ou diretamente no: http://sourceforge.net/projects/pys60

Podemos escrever um "olá mundo" em PyS60 com apenas duas linhas, importando o módulo "audio", que inclui as funções relacionadas à reprodução e gravação de áudio e o acesso ao sintetizador de voz. A partir daí, podemos usar a função "audio.say" para fazer o aparelho falar, veja só:

import audio
audio.say("Tenha um bom dia")

Se você preferir que a mensagem seja exibida em uma janela de texto, pode usar a função "appuifw.note", que faz parte do módulo "appuifw". Este é o módulo responsável por criar janelas e diálogos, por isso é usado por praticamente todos os programas:

import appuifw
appuifw.note(u"Tenha um bom dia")

Para fazer uma pergunta, e armazenar a resposta em uma variável, você poderia usar a seguinte função:

import appuifw
arquivo = appuifw.query(u"Digite o nome do arquivo", "text")

A função "appuifw.query" permite fazer perguntas, enquanto o "arquivo =" no início da linha faz com que o texto digitado seja armazenado na variável especificada, que pode ser usada para abrir ou salvar um arquivo, por exemplo.

A riqueza do Python está em permitir o acesso aos recursos do aparelho, tirando fotos, enviando ou recebendo arquivos, usando o acelerômetro, acessando a agenda de contatos, enviando mensagens SMS e assim por diante. Para tirar uma foto com a câmera, por exemplo, você usaria:

import camera
foto = camera.take_photo()
photo.save("E:\\foto.jpg")

Como pode imaginar, o módulo "camera" carrega as funções relacionadas à câmera, que permite tirar fotos, gravar vídeos, ativar o LED do flash e assim por diante. Uma das funções mais simples é a "camera.take_photo", que simplesmente tira uma foto na resolução máxima. Como queremos que a foto seja salva em um arquivo, salvamos a foto na variável "foto" e em seguida usamos a função "photo.save" para salvá-la no arquivo "foto.jpg", no diretório raiz do cartão de memória (visto pelo sistema como o drive E).

Com apenas estas três linhas, o programa não teria muita utilidade, já que ele iria sempre salvar a foto no mesmo arquivo. Entretanto, se você combinasse a função e tirar a foto com a ler uma variável do exemplo anterior, poderia fazer com que o programa perguntasse o nome do arquivo antes de salvar. A parti daí, Você poderia adicionar uma função para definir a resolução, enviar a foto por e-mail (ou via Bluetooth) e assim por diante. O interessante do Python é justamente oferecer uma curva de aprendizado mais suave, permitindo que você comece com scripts simples e vá gradualmente adicionando novos truques

A forma mais simples de rodar o programa é criar um arquivo de texto (você pode usar o notepad do Windows, o Gedit ou qualquer outro editor de texto puro) contendo os comandos e transferí-los para o smartphone. Salve seu arquivo de texto com a extensão ".py" e copie-o para a pasta "Python" do cartão de memória (ou da memória interna). Em seguida, abra o Python e use o "Options > Run Script" para executá-lo:

Uma forma bastante conveniente de trabalho é usar o perfil de transferência de arquivos do Bluetooth para acessar os arquivos do smartphone diretamente. Isso permite que você edite o script diretamente a partir do aparelho e possa executá-lo rapidamente a cada mudança para testar novas rotinas e corrigir os erros conforme eles apareçam.

Para scripts simples, como nesse primeiro exemplo, você também usar o console ("Opções > Interactive console"), que permite que você simplesmente escreva as instruções diretamente, com o sistema executando os comandos linha a linha:

Você pode ver mais exemplos de scripts em Python que executam as mais diversas funções (de um gravador de som a um servidor web) no Mobile Python: http://www.mobilenin.com/mobilepythonbook/examples.html

Outros sites com exemplos de código são o Cyke64 (http://cyke64.googlepages.com/), o DZone (http://snippets.dzone.com/tags/series60) e o Croozeus (http://www.croozeus.com/).

Outra parada obrigatória é o Wiki: http://wiki.opensource.nokia.com/projects/Python_for_S60

Na hora de distribuir os aplicativos que escrever, você tem a opção de simplesmente disponibilizar os arquivos .py, que podem ser executados dentro do interpretador, ou transformá-los em arquivos .sis, que se comportam como aplicativos nativos do sistema.

A segunda opção é a ideal se você pretende distribuir os aplicativos, já que melhora a apresentação e elimina o incômodo de precisar executá-los dentro do interpretador python. Uma vez empacotados, os programas aparecem no menu e são executados exatamente da mesma forma que outros aplicativos.

Você pode gerar os arquivos .sis com o Ensymble, disponível no: http://code.google.com/p/ensymble/

Você pode usá-lo tanto no Linux quanto no Windows (o comando é o mesmo nas duas plataformas). É necessário apenas que o interpretador Python esteja instalado. Ele já vem instalado por padrão no Linux e o instalador da versão Windows pode ser baixado no:
http://www.python.org/download/

Com o Python instalado, use o comando "python -V" para descobrir qual é a versão que está instalada:

$ python -V

Python 2.4.4

No site do Ensymble, você encontra diferentes versões do script, correspondentes às versões do Python. Como estou usando a versão 2.4.4 do Python, baixo o arquivo "ensymble_python2.4-0.27.py".

O uso é bastante simples. Coloque o arquivo dentro de uma pasta junto com o arquivo .py do seu aplicativo. Em seguida, acesse a pasta via terminal (no Windows use o prompt do DOS) e use o comando de conversão:

$ python ensymble_python2.4-0.27.py py2sis --vendor=GDH hello.py hello.sis

Dentro do comando, o "--vendor=" especifica o nome do desenvolvedor (ou seja, você), que é mostrado ao usuário quando ele instala o pacote. O "hello.py" é o arquivo de entrada, enquanto o "hello.sis" é o arquivo que será gerado. O nome do programa (que aparece nos menus) é por padrão o mesmo nome do arquivo, mas você pode especificar outro nome usando o parâmetro "--appname=Nome".

O script gera um arquivo .sis auto-assinado, que pode ser instalado diretamente em aparelhos com o S60 3ed. Como todo arquivo auto-assinado, ele exibe o tradicional aviso de segurança, mas, com exceção disso, a instalação ocorre sem percalços, como em qualquer outro aplicativo.

  1. 6 respostas para “Programando em Python com o PyS60”

  2. Avelino em 28 Dec, 2008

    Bacana, obrigado pelo aprendizado, espero ter disciplina para aprender e colocar em prática o que foi ensinado

  3. Marcelo em 28 Dec, 2008

    Iniciativas como este post do Morimoto sobre Python PyS60 são muito bem vindas. É possível "brincar" com Python tanto no Linux (aqui uso Ubuntu) como também no Windows. E Python realmente tem uma curva de aprendizado bem suave se for comparado ao Java e mais ainda do que o SDK Android. Com Python S60 o programador ganha em produtividade.

  4. Marcos em 29 Dec, 2008

    Muito bom o artigo mas não consegui baixar o arquivo pys60 dos links mencionados no início. Há alguma alternativa a isso?

  5. Roerto em 30 Dec, 2008

    Ótimo post, parabéns.
    Só uma dúvida esse python funciona só no S60? bahhh e quando trocarem para um S70 S80 S90?? Será que irão manter a mesma estrutura.

  6. Ederson em 30 Dec, 2008

    Excelente, instalei no meu E51 e funcionou 100%, agora é só correr atras pra aprender a progmar phyton.

    Alguém sabe onde posso achar o código fonte em phyton de um cliente SIP?

    Abraços.

  7. Marcelo em 7 Jan, 2009

    A nova versão do pyS60, a 1.9, agora está no maemo: https://garage.maemo.org/frs/?group_id=854, agora com python 2.5


Comente: