Introdução ao Desenvolvimento de Aplicações Móveis com Python para S60
1. Introdução ao Desenvolvimento de Aplicações Móveis
para plataforma Symbian com Python para S60.
Marcel Pinheiro Caraciolo
1
Saturday, August 22, 2009
2. Quem é o palestrante ?
• Marcel Pinheiro Caraciolo
• Atual: Mestrando em ciência da computação pela UFPE
• Engenheiro da Computação pela POLI/UPE. (2008)
• Experiência: TIM (analista de sistemas), I2 Tecnologia (consultor de
desenvolvimento) e CESAR (engenheiro de sistemas)
• Experiência com computação móvel e inteligente:
• Blog Mobidéia: (http://mobideia.blogspot.com) - Mobile
• Blog A.I. in motion (http://aimotion.blogspot.com) - I.A.
• Experiência com Python há mais de 2 anos. (Contribuições em
frameworks de I.A na comunidade open-source).
2
Saturday, August 22, 2009
3. Agenda
• Smartphones Symbian s60
• Python/ Python para S60 (PyS60)
• Primeiros passos com o PyS60
• Conceitos básicos de desenvolvimento
• PyS60 API Tour e Demos
• “Brief Review”
3
Saturday, August 22, 2009
5. O que são celulares Symbian S60 ?
• Smartphones - “celulares inteligentes” - com
velocidade de um PC@1998.
• Sistema operacional Symbian (Consórcio mantido
por diversos fabricantes de dispositivos móveis).
• 2008 - Nokia adquire o Symbian e funda o “Symbian Foundation””
• Plataforma Série 60: Symbian UI + recursos
adicionais.
5
Saturday, August 22, 2009
6. Smartphones Nokia
• Grande parte dos celulares S60 são da Nokia.
• Concorrentes diretos do Symbian S60:
• Android OS, Windows Mobile, Mac OS
(Iphone), Palm WebOs, OpenMoko.
• Nova linha de aparelhos S60 “touch-screen”
• Nokia 5800, Nokia N97.
6
Saturday, August 22, 2009
7. Por que desenvolver para S60 ?
• Mais de 100 milhões de celulares vendidos.
• Previsões apontam como plataforma dominante para os
próximos 5 anos.
• Várias opções de linguagem: JavaME, C++, Python,
FlashLite, C, JavaScript, Qt...
• Plataforma aberta e SDK gratuito
• Existem uma comunidade de desenvolvedores
• Dispositivos são computacionalmente poderosos (“evita
ter de escovar bits”)
7
Saturday, August 22, 2009
9. ... E por que o Python para S60 ?
• Pelas virtudes naturais do Python :)
• Desenvolvimento em C++ para dispositivos móveis é
ainda mais árido que para desktop.
• Desenvolvimento no PC, uso real no celular;
computadores completamente diferentes!
• Emulador Symbian diverge do celular
• Pouco software livre e/ou aberto para consulta
• Muitas diferenças entre versões do S60, mesmo entre
“minor releases”(feature packs)
9
Saturday, August 22, 2009
10. ... E por que o Python para S60 ?
• API mais estável, pois as diferenças entre versões são
resolvidas no pacote Python
• Boa parte das bibliotecas padrão do Python está disponível
no PyS60
• A depuração no dispositivo é mais fácil
• Torna muito mais fácil o acesso a recursos como câmera ou
SMS, em relação a C++
• Comunidade mais atuante
• http://forum.nokia.com
10
Saturday, August 22, 2009
11. ... Sobre Python, a linguagem...
• Linguagem de programação open source criada por Guido
Van Rossum desde 1990.
• Objetivos: maximizar a produtividade e a extensibilidade
na programação
• Ênfase especial na leitura e compreensão do código
• “Linguagem pequena, imensa biblioteca”.
• Fácil extensão com o código nativo.
• Linguagem de script moderna, orientada a objetos bem
completa com funcionalidades como classes, herança,
objetos, exceções, gerenciamento automático de memória,
threads, etc.
11
Saturday, August 22, 2009
12. A “cara” do Python
def get_quote(acao):
url = "http://www.bovespa.com.br/...”
pagina = urllib.urlopen(url).read()
inicio = pagina.find("R$")+2
final = pagina.find("</td>", inicio)
cotacao = s[inicio:final].strip()
try:
valor = int(cotacao)/100.0
except ValueError:
valor = 0 # deixe como zero
return valor
12
Saturday, August 22, 2009
13. Python para S60 (PyS60)
• Simplifica o desenvolvimento de
aplicações e é uma solução
alternativa para APIs Symbian C++.
• Usada de diversas maneiras:
• Aplicativos GUI
• Aplicativos em background (“daemon”)
• Inseridos no seu aplicativo C++
• Caminho mais fácil de desenvolver
aplicativos nativos para o Symbian
• Implementação Open source, de
fácil extensão com a API Python/C.
13
Saturday, August 22, 2009
14. Python para S60 (PyS60)
• Versões até 1.4.x - Python 2.2.2
• Versões 1.9.x - Python 2.5.0
• Consiste de:
• Python runtime:
• Interpretador DLL Python
• Bibliotecas e módulos padrões e
proprietárias do Python
• Python Script Shell:
• Ambiente de execução para os
scripts em Python
• Kit de desenvolvimento para
escrita de extensões e testes de
script no PC (Apenas no Windows)
14
Saturday, August 22, 2009
15. Python para S60 (PyS60) -Bibliotecas
• Suporta a maioria das bibliotecas padrões de Python -
alguns módulos podem ser adicionados direto no PyS60
sem modificações
• Suporta a maioria das bibliotecas do S60
• e32, sysinfo, appuifw, graphics, camera, keycapture, audio,
telephone, messaging.
15
Saturday, August 22, 2009
17. Python nos celulares Symbian S60
• Projeto hospedado no site SourceForge:
• http://sourceforge.net/projects/pyS60.
• Novas versões (1.9.x) no site garage Maemo
• https://garage.maemo.org/projects/pys60
• Código-Fonte
• Documentação
• Diversas distribuições:
• Interpretador/Script Shell
• SDK
• Versões: 1º Ed. , 2º Ed. , 3ºEd. (FP1, FP2), 5nd Ed.
• Site com informações sobre as versões do seu aparelho
• h"p://www.forum.nokia.com/devices/matrix_all_1.html
17
Saturday, August 22, 2009
18. O que está disponível para download ?
• Todo o código fonte do pyS60 em C++/Open C
• Interpretador pyS60 para versão PC/mobile:
• PythonForS60_1_x_x_.SIS para celulares
• Python_1_x_x_<yourS60version>_with_OpenC.zip para executar scripts
Python em emuladores S60 e compilar suas próprias extensões (Apenas
para ambiente Windows)
• PyS60 Script Shell:
• Ideal para testes e desenvolvimento de scripts.
• PythonScriptShell_1_x_x_.sis
• Disponível também em versão não assinada “unsigned”, caso novas
funcionalidades sejam requeridas.
• Disponível versão “high_capas”, com várias permissões para acesso de
funcionalidades do aparelho (para testes de aplicações).
• Documentação/API e release notes (As novidades da versão).
18
Saturday, August 22, 2009
19. Primeiros passos - PyS60 - celular
• Instale o pacote do interpretador
PyS60. No nosso exemplo, então
instalamos o
PythonForS60_1_9_7.sis
• Você pode instalar pelo PC Suite
(Windows) ou enviando o
arquivo .SIS via bluetooth (Linux ou
Mac) ou ainda pelo browser do seu
aparelho.
• Instalado o interpretador, o
próximo passo é instalar o PyS60
Script Shell.
19
Saturday, August 22, 2009
20. Primeiros passos - PyS60 - celular
• Instale o PyS60 Script Shell. No
nosso exemplo, instalamos o
PythonForScriptShell_1_9_7_3.SIS
• Script shell é extremamente útil
para executar e testar seus scripts
através de um console.
• O aplicativo Python é visível no
menu principal de aplicativos do
seu aparelho.
20
Saturday, August 22, 2009
21. Primeiros passos - PyS60 - celular
• Run Script -> Lê os scripts
armazenados em E:Python and C:
Python
• Há um console interativo se
desejar editar código direto no
aparelho.
• Bluetooth Console para edição
remota de seus scripts Python.
• Não é necessário para aplicativos
executáveis em Python!
21
Saturday, August 22, 2009
22. Testando PyS60 scripts
• Inicie o PyS60 Script Shell
• Clique em Options/ Run Script
• Escolha um dos scripts na lista e pressione “Ok”
22
Saturday, August 22, 2009
24. Ferramentas de desenvolvimento- Windows
• Instalação do interpretador Python na sua máquina -
Python 2.5.x
• S60 Platform SDKs for Symbian OS, for C++-> Provê o
ambiente de emulação do Symbian no PC para criação e
execução de scripts em Python e a criação de extensões.
• A partir da versão 1.9.x:
• Dependências (.SIS) + Documentação + PyS60 Application Packager vêm
empacotados em um mini-setup (PythonForS60_1_x_x_Setup.exe) -
Windows
• PyS60 Application Packager - Ferramenta para empacotar seus scripts
Python em arquivos instaláveis .SIS (Ensymble). GUI apenas para Windows :(
• Dispositivo S60 com cartão de memória (opcional)
• Nokia PC Suite - (opcional)
24
Saturday, August 22, 2009
25. Ciclo básico de desenvolvimento- Windows
• Como instalar o SDK para
PyS60:
• Faça o download do S60_??
__sdk._fp.zip, extraia seu
conteúdo e execute o
setup.exe
• Faça o download do
PythonForS60_1_x_x_SDK_
3rd_Erd_with_Open_C.zip,
extraia seu conteúdo
(sdk_files.zip) e substitua a
pasta na raiz do Symbian.
25
Saturday, August 22, 2009
26. Ciclo básico de desenvolvimento- Windows
• Crie um arquivo .py utilizando qualquer editor de texto de sua
preferência
• (Não há uma IDE específica para PyS60) :(
• Salve o mesmo em C:Symbian9.xS60_xrd_xxEpoc32winscwc
python
• Inicie o emulador S60 SDK
• Clique em Python Script Shell e selecione seu Script
• Clique em “Select” para executá-lo
import appuifw
appuifw.note(u’Hello World!’)
26
Saturday, August 22, 2009
27. Ferramentas de desenvolvimento- Windows
• Instalação do interpretador Python na sua máquina -
Python 2.5.x
• S60 Platform SDKs for Symbian OS, for C++-> Provê o
ambiente de emulação do Symbian no PC para criação e
execução de scripts em Python e a criação de extensões.
• A partir da versão 1.9.x:
• Dependências (.SIS) + Documentação + PyS60 Application Packager vêm
empacotados em um mini-setup (PythonForS60_1_x_x_Setup.exe) -
Windows
• PyS60 Application Packager - Ferramenta para empacotar seus scripts
Python em arquivos instaláveis .SIS (Ensymble). GUI apenas para Windows :(
• Dispositivo S60 com cartão de memória (opcional)
• Nokia PC Suite - (opcional)
27
Saturday, August 22, 2009
28. Ferramentas de desenvolvimento- Linux
• Alguma versão do Python instalada (Possivelemente sua
distribuição Linux já deve ter uma!)
• Não há um ambiente de emulação oficial -> (GNUPOC)
• Ferramenta de criação de arquivos instaláveis (Ensymble)
• Donwload: PythonForS60_1_9_7.tar.gz
• Dependências (.SIS) + Documentação + Ensymble
• PyS60-compat - Biblioteca de emulação de algumas APIs do
PyS60
• Aparelho Symbian S60 com um cartão de mémoria (pode
ajudar no teste de scripts)
• Conectividade Bluetooth Ativa!
28
Saturday, August 22, 2009
29. Ferramentas de desenvolvimento -Linux
• Crie seu script .py em qualquer
editor de texto de sua preferência
• Envie seu script para pasta E:
Python utilizando o obexftp ou
conectando o telefone como drive
usb.
• Inicie o PyS60 Script Shell
• EScolha o Script da lista
• Clique “Select”para executá-lo
29
Saturday, August 22, 2009
30. Criando aplicativos Python instaláveis
• Caminho mais fácil: Ensymble
• Para S60 3nd Edition, PyS60 1.4.0 ou posterior
• Linux, Mac, Windows
• Na versão 1.9.x - Com interface
gráfica!
• Objetivo: Criar arquivos .sis que
podem ser instalados no telefone
como um aplicativo nativo.
• Aparecem no menu principal e tem seu próprio C:devpython>ensymble_python2.5-0.26.py py2sis
simplecube.py
ícone.
30
Saturday, August 22, 2009
31. Ops... Segurança do Symbian afeta o Python!
• Acessando algumas funcionalidades “capabilities” específicas
do telefone dependem do certificado do desenvolvedor
assinado pela Symbian
• Captura de teclas (fora da aplicação)
• Leitura do cell ID
• Leitura do GPS (interno)
• Acesso a arquivos protegidos do sistema
• Obtenha seu certificado (ID) no Open Signed Online.
• Registre-se no www.symbiansigned.com
• Registre o IMEI do o seu fone com o certificado (devcert)
• Assine sua aplicação com o certificado
• Instale seu aplicativo no telefone.
31
Saturday, August 22, 2009
33. Layout básico de uma aplicação S60
• Application pode ser usada para
acessar e modificar o UI
(appuifw.app)
• Elementos UI:
• Title, Tabs, Body (Text, ListBox, Canvas), LSK, RSK
• Defina funções de tratamento de
eventos para o menu Options e
Exit
• Espere por uma entrada do usuário
usando uma “trava” - Active Object
lock
33
Saturday, August 22, 2009
34. Layout básico de uma aplicação S60
• Demo: SampleUI
34
Saturday, August 22, 2009
35. Layout básico de uma aplicação S60
• Controles de UI são implementados
como tipos em Python
• ListBox, Text, Canvas
• Controles são atribuídos no corpo do
aplicativo (usando app.body.control)
• Caixas de diálogo (Dialogs) são
implementadas como funções chamadas
a partir do appuifw.
• Objetos específicos para tratamento de
conteúdo (Content_handlers para
acesso a arquivos)
35
Saturday, August 22, 2009
36. Layout básico de uma aplicação S60
• Demo: MenuApp
36
Saturday, August 22, 2009
38. Multimídia - audio, video, camera
• Aplicativos multimídia podem ser desenvolvidos através de
módulos:
• Audio - permite a reproducao e gravacao de audio e a funcionalidade
texto -voz s=audio.Sound.open(u”c:arquivo.wav”) s.record() , s.stop()
s.play()
• Camera - Para tirar fotos, gravar vídeos e controlar aspectos da câmera
Image i = camera.take_photo() camera_start_finder(funcao)
• Graphics - Manipulação de imagens graphics.Image.open(“e:area.png”)
graphics.Image.save(“e:photo.jpg”)
• SysInfo - Obtenha informações sobre seu aparelho sysinfo.battery(),
imei(), signal()
38
Saturday, August 22, 2009
39. Messaging e Inbox - sms/mms
• O módulo Inbox permite você
manipular sua caixa de entrada
de mensagens.
• O módulo Messaging dá ao seu
aplicativo o poder de enviar e
receber mensagens SMS e MMS
39
Saturday, August 22, 2009
40. Vamos construir nosso primeiro Aplicativo!
• DEMO: PyFoto / PyHealth
40
Saturday, August 22, 2009
41. Conectividade: Bluetooth
• As aplicações Python usam
módulo socket padrão para
comunicação via Bluetooth, tcp,
etc.
• Demo: BluePy
• Ativem seu bluetooth!
41
Saturday, August 22, 2009
42. Conectividade: HTTP e até XML!!
• Biblioteca urlib pode ser usada
para HTTP e comunicações Web
• Construa seus protocolos em
script Python para se comunicar
com aplicações web (REST)
• Demos
42
Saturday, August 22, 2009
43. Muito mais! Explore a API!!
• Localização
• E32dbm (persistência)
• Telephone
• Contatos
• Sensores...
• Demos
43
Saturday, August 22, 2009
44. Já imaginou controlar seu PC ?
• Bluetooth + Sensores
• PyAcceleRemoter
• Servidor em Python
44
Saturday, August 22, 2009
45. ... e que tal um jogo Multi-player ??
• Demos
• PyBattle
45
Saturday, August 22, 2009
46. O céu.. oops, Não há limites!
• Vários Aplicativos podem ser
desenvolvido com Python!
• É só ter sua idéia e botar a mão na massa!
• Extensões para PyS60
• Crie suas extensões para incrementar seus
aplicativos (Open C/C++)!
• Flyer (Flashlite UI + PyS60)
• Games
• PyGames for PyS60
• Telefone, Web, outros...
• CallStatus, KeyPress, PyS60USB, QrCodes,
Wordmobi, PySChart, A.I., GSM/3G INFO, etc.
46
Saturday, August 22, 2009
47. Brief Review
• Introdução a Linguagem Python
• www.python.org/doc
• Vários exemplos do livro:
• http:/www.mobilepythonbook.com
• http://developer.symbian.org/wiki/index.php/Python_Book_ToC
• Comunidade sempre à disposição
• h#p://wiki.forum.nokia.com/index.php/Category:Python
• http://wiki.opensource.nokia.com/projects/Python_for_S60
• http://croozeus.googlepages.com/pyS60
• Contribua com artigos, posts em fóruns, aplicações!
Você pode se tornar um Forum Nokia Champion
e ganhar prêmios!
• Futuro do PyS60 : Python for Symbian! Suporte à Qt!
47
Saturday, August 22, 2009
49. Introdução ao Desenvolvimento de Aplicações Móveis
para plataforma Symbian com Python para S60.
Marcel Pinheiro Caraciolo
49
Saturday, August 22, 2009
50. Jogos e Realidade Aumentada
• Desenvolvimento de Games, com
possibilidade de realidade aumentada!
• Demos
50
Saturday, August 22, 2009