remobile
DESCRIPTION
Palestra realizada na primeira edição do Remobile sobre desenvolvimento Python para aparelhons Symbian S60 (Palestrante: Marcel Caraciolo)TRANSCRIPT
Introdução à programação Python para smartphones Nokia S60
M a r c e l P in h e ir oC a r a c io lo
Quem é o palestrante ?• Marcel Pinheiro Caraciolo
• Atual: Mestrando em ciência da computação pelo CIN/UFPE.• Engenheiro da computação pela POLI/UPE.• Experiência: TIM (analista de sistemas), I2 Tecnologia (consultor de desenvolvimento) , C.E.S.A.R (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á quase 1 ano.
Agenda
• Smartphones Symbian S60• Python / Python para S60 (PyS60)• Primeiros passos com o PyS60.
• Arquivos e instaladores.• Instalação do interpretador e execução de scripts Python.
• Conceitos básicos de desenvolvimento• Ferramentas, emuladores, etc.• Criação de um simples aplicativo executável.
• PyS60 API Tour e Exemplos• Conclusão
Smartphones Symbian S60
O que são celulares 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.
Smartphones Nokia• Grande parte dos celulares S60 são da Nokia.• Concorrentes diretos do Symbian S60:
• Baseados em Symbian: S80, S90, UIQ.• Não baseados em Symbian: Android OS, Windows Mobile, Mac OS X
(Iphone) - todos não smartphones Nokia.
• Nova linha de aparelhos S60 “TouchScreen” : • Nokia 5800 XpressMusic, N97 .
Por que desenvolver para S60 ?
• Mais de 100 milhões de celulares vendidos.• Previsões apontam como plataforma dominante para os
próximos 5-10 anos.• Várias opções de linguagem: J2ME, C++, Python, FlashLite,
JavaScript, C, etc. • Plataforma aberta e SDK gratuito• Existe uma comunidade de desenvolvedores• Dispositivos são computacionalmente poderosos (evita ter de
”escovar bit”)
Python / PyS60
• Pelas virtudes naturais do Python :)• Desenvolvimento C++ para dispositivos móveis é ainda mais
árido que para desktop.• Desenvolvimento no PC, uso real no celular; computadores
completamente diferentes!• Emulador Symbian no PC 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”)
… E por que usar o Python para S60?
…. E porque usar 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 muito mais atuante
• http://pys60.sourceforge.net
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 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.
A “cara” de Pythondef 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
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.
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 Windows)
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 maioria das bibliotecas do S60• e32• sysinfo• appuifw • graphics• camera• keycapture• audio• telephone• messaging
Primeiros passos com o PyS60
Python nos celulares Symbian S60• Projeto hospedado no site SourceForge:
http://sourceforge.net/projects/pys60
• Novas versões no site do 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). • Site com informações sobre as versões do seu aparelho:
• http://www.forum.nokia.com/devices/matrix_all_1.html
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_<yourS60version>.SIS para celulares• PythonForS60_1_x_x_SDK_<yourS60SDK>.zip para executar
scripts Python em emuladores S60 e compilar suas próprias extensões (Apenas ambiente Windows).
• pyS60 Script Shell:• Ideal para testes e desenvolvimento de scripts.• PythonScriptShell_1_x_x_<yourS60version>.SIS• Disponível também em versão não assinada “unsigned” ,caso
novas funcionalidades sejam requeridas.
• Documentação e API.• Release notes (As novidades da versão!)
Primeiros passos – PyS60 em um celular• Instale o pacote do
interpretador PyS60. No nosso exemplo seria um Nokia N95 que é um S60 3rd. Edição FP1 então instalamos o PythonForS60_1_4_5_3rd.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.
Primeiros passos – PyS60 em um celular
• Instale o PyS60 script Shell. No nosso exemplo, usamos o Nokia N95 que é um aparelho 3rd. Edição FP1, então instalamos PythonScriptShell_1_4_5_3rd.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.
Primeiros passos – PyS60 em um 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!
Testando PyS60 scripts
• Inicie o PyS60 Script Shell• Clique em Options / Run Script• Escolha um dos scripts na lista e pressione ‘OK’
Conceitos básicos de desenvolvimento
Ferramentas de desenvolvimento-Windows• Instalação e execução do interpretador Python na sua máquina (
http://www.python.org/download/) - Python 2.5.x• S60 Platform SDKs for Symbian OS, for C++ Provê o ambiente de
emulação do Symbian no PC para a criação e execução de scripts em Python e a criação de extensões (www.forum.nokia.com/tools).
• Pacote PythonForS60_1_x_x_SDK_3rdEd.zip para ativar o Python no S60 SDK.
• Ferramenta para empacotar seus scripts Python em arquivos instaláveis .SIS (Ensymble - http://www.nbl.fi/~nbl928/ensymble.html) ou Py2sis (vem junto com o SDK).
• Se você estiver usando o Ensymble, baixe o utilitário de linhas de comando OpenSSL -> http://www.stunnel.org/download/binaries.html
• Dispositivo S60 com cartão de memória (opcional)• Nokia PC Suite – (opcional)
Ferramentas 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_3rdEd.zip, extraia seu conteúdo (sdk_files.zip) e substitua a pasta na raiz do Symbian.
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:\Symbian\9.x\S60_xrd_xx\Epoc32\winscw\c\python
• Inicie o emulador S60 SDK• Clique em Python Script Shell, e selecione seu script• Clique em “Select” para executá-lo
import appuifwappuifw.note(u’Hello World!’)
Ferramentas de desenvolvimento - Linux• Alguma versão do Python instalada (Possivelmente 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 .SIS -(Ensymble -
http://www.nbl.fi/~nbl928/ensymble.html) + utilitário OpenSSL
• PyS60-compat – Biblioteca para emulação de algumas APIs do PyS60 • (http://sourceforge.net/projects/pys60-compat/)
• Aparelho Symbian S60 com um cartão de memória (pode ajudar no teste de scripts!)
• Conectividade Bluetooth ativa
Ferramentas de desenvolvimento - Linux
• Crie seu script .py em qualquer editor de texto de sua preferência
• Envie seu script para a pasta E:\Python utilizando obexftp ou conectando o telefone como drive usb.
• Inicie o PyS60 Script Shell• Escolha o script da lista• Clique “Select” para executá-lo.• Solução alternativa:
• PyS60-compat - UI e gráficos• http://sourceforge.net/projects/pys60-
compat/
Criando aplicativos Python instaláveis• Caminho mais fácil: Ensymble
• http://www.nbl.fi/~nbl928/ensymble.html• Para S60 3rd Edição, PyS60 1.4.0 or versão posterior• Linux, Mac, Windows
• Outra alternativa: py2sis junto com a distribuição do código-fonte do Py-S60• Na versão 1.9.x – Com interface gráfica!
• Ambas ferramentas criam arquivos .sis que podem ser instalados no telefone como um aplicativo nativo.• Aparecem no menu principal e tem seu próprio ícone
C:\dev\python>ensymble_python2.5-0.26.py py2sis simplecube.py
Ops… Segurança do Symbian afeta o Python!• www.symbiansigned.com• Acessando algumas funcionalidades “capabilities”
específicas do telefone dependem de certificado do desenvolvedor assinado pela Symbian • Captura de teclas(fora da aplicação)• Leitura do cell ID• Leitura do GPS (interno)• Ajuste do relógio do sistema• Acesso a arquivos protegidos do sistema
• Obtenha seu certificado (ID) no Open Signed Online• Registre-se no www.symbiansigned.com . É gratuito!• Registre o IMEI do seu fone com o certificado (devcert)• Assine sua aplicação com o certificado• Instale seu aplicativo no telefone
PyS60 API Tour e Exemplos
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 and RSK
• Defina funções de tratamento de eventos para o menu Options e a tecla Exit
• Espere por uma entrada do usuário usando uma “trava” -Active Object lock.
Demo: SampleUIApp
Layout básico de uma aplicação S60
• Controles de UI são implementadas 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 módulo appuifw.
• Objetos específicos para tratamento de conteúdo (Content_handlers para acesso à arquivos).
Layout básico de uma aplicação S60
Layout básico de uma aplicação S60
Demo 2: MenuApp
UI framework – Componentes
Multimídia – audio, video, camera Aplicativos multimídia podem ser desenvolvidos através dos módulos:
Audio – permite a reprodução e gravação de áudio e a funcionalidade de texto-voz (Inclusive fazer trotes!)
s=audio.Sound.open(u”c:\\arquivo.wav”)s.record(),s.stop(), s.play()
Camera – Para tirar fotos, gravar vídeos, controlar aspectos da câmera e acessar configurações da câmera
Image i = camera.take_photo()camera.start_finder(função), camera.stop_finder()
Graphics – Manipulação de imagensgraphics.Image.open("e:\\area.png"), graphics.Image.save(“e:\\photo.jpg”)
**Sysinfo – Obtenha informações do seu aparelho.sysinfo.battery(),.imei(),.signal_dbm()
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 SMS e MMS• messaging.sms_send(”96094364”, u”Oi”)
• messaging.mms_send(...)
Vamos construir nosso primeiro Aplicativo!
1. Importe todos módulos necessários 2. Ajuste o tamanho da tela(normal, large, full)3. Crie a lógica da sua aplicação ... 4. Crie o menu da aplicação (se necessário) 5. Sete o evento de saída (exit key handler)6. Sete o título da aplicação7. Verifique os Actives Objects (Aos) 8. Sete o corpo da aplicação(text ou canvas ou listbox or none) 9. Crie um main loop (ex. While loop) se necessário
Demo: PyFoto
Conectividade: Bluetooth• As aplicações Python
usam módulo socket padrão para comunicação via Bluetooth, TCP, etc.
Demo: BluePyAtivem seu bluetooth!
Conectividade: HTTP e até XML!!
• Biblioteca urllib pode ser usada para HTTP e comunicações Web
• Construa seus protocolos em scripts python para se comunicar com aplicações web (REST)
Demo: PyFlicker
Muito mais! Explore a API!!
• Localização• E32dbm (persistência)• Telephone• Contatos• Sensores….
Demo: Shake your music
… E que tal um jogo Multi-player ??
Demo: PyBattle* Por favor, 2 guerreiros da platéia!
O céu… ops, “Python” é o limite!• Vários aplicativos podem ser
desenvolvidos 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• PyGame for PyS60, OpenGames.
• Telefone• CallStatus, Keypress, PyS60USB
• Web• QrCodes, TwitterAPI, OpenSocial, WordMobi
• Outros• PySchart, TunnerAPI, A.I. , GSM/3G Info, etc.
Conclusão
• Introdução a Linguagem Python• www.python.org/doc• Vários exemplos do livro:• http://www.mobilepythonbook.com • Comunidade sempre à disposição !• http://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, aplicativos, etc.
Você pode se tornar um Forum Nokia Champion e ganhar prêmios! (http://www.forum.nokia.com)
Obrigado!Dúvidas?!
M a r c e l P in h e ir oC a r a c io lo
.c a r a c io l@g m a il c o m
Introdução à programação Python para smartphones Nokia S60
M a r c e l P in h e ir oC a r a c io lo
Ensymble
Usar o "ensymble" para gerar o arquivo SIS (The Ensymble developer utilities for Symbian OS): ensymble py2sis <source> <target> --uid=<uid> --appname= <appname>
http://wiki.forum.nokia.com/index.php/How_to_make_py_to_sis_for_3rd_Editon_devices
Trote.py
import telephone, audio, times = audio.Sound.open(“E:\\TROTE.WAV”)telephone.dial(“190”)# espere atenders.record()time.sleep(10)telephone.hang_up()s.stop()# divirta-se com o resultados.play()
Connectivity – urllibSource: webclient.py
import urllib, appuifw, e32
URL = "http://www.python.org/images/python-logo.gif"
dest_file = u"C:\\Data\\Images\\python-logo.gif"
urllib.urlretrieve(URL, dest_file)
lock = e32.Ao_lock()
viewer = appuifw.Content_handler(lock.signal)
viewer.open(dest_file)
lock.wait()
import camera, e32, socket, appuifw
PHOTO = u"C:\\Data\\Images\\bt_photo_send.jpg"
def send_photo():
try:
address, services = socket.bt_obex_discover()
except:
appuifw.note(u"OBEX Push not available", "error")
return
if u'OBEX Object Push' in services:
channel = services[u'OBEX Object Push']
socket.bt_obex_send_file(address, channel, PHOTO)
appuifw.note(u"photo sent", "info")
else:
appuifw.note(u"OBEX Push not available", "error")
Connectivity – bluetooth photo senderSource: bluetooth.py