remobile

51
Introdução à programação Python para smartphones Nokia S60 M a r c e l P in h e ir o C a r a c io lo

Upload: marcel-caraciolo

Post on 05-Jul-2015

2.396 views

Category:

Education


1 download

DESCRIPTION

Palestra realizada na primeira edição do Remobile sobre desenvolvimento Python para aparelhons Symbian S60 (Palestrante: Marcel Caraciolo)

TRANSCRIPT

Page 1: Remobile

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

Page 2: Remobile

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.

Page 3: Remobile

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

Page 4: Remobile

Smartphones Symbian S60

Page 5: Remobile

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.

Page 6: Remobile

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 .

Page 7: Remobile

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”)

Page 8: Remobile

Python / PyS60

Page 9: Remobile

• 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?

Page 10: Remobile

…. 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

Page 11: Remobile

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.

Page 12: Remobile

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

Page 13: Remobile

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.

Page 14: Remobile

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)

Page 15: Remobile

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

Page 16: Remobile

Primeiros passos com o PyS60

Page 17: Remobile

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

Page 18: Remobile

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!)

Page 19: Remobile

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.

Page 20: Remobile

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.

Page 21: Remobile

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!

Page 22: Remobile

Testando PyS60 scripts

• Inicie o PyS60 Script Shell• Clique em Options / Run Script• Escolha um dos scripts na lista e pressione ‘OK’

Page 23: Remobile

Conceitos básicos de desenvolvimento

Page 24: Remobile

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)

Page 25: Remobile

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.

Page 26: Remobile

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!’)

Page 27: Remobile

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

Page 28: Remobile

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/

Page 29: Remobile

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

Page 30: Remobile

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

Page 31: Remobile

PyS60 API Tour e Exemplos

Page 32: Remobile

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.

Page 33: Remobile

Demo: SampleUIApp

Layout básico de uma aplicação S60

Page 34: Remobile

• 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

Page 35: Remobile

Layout básico de uma aplicação S60

Demo 2: MenuApp

Page 36: Remobile

UI framework – Componentes

Page 37: Remobile

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()

Page 38: Remobile

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(...)

Page 39: Remobile

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

Page 40: Remobile

Conectividade: Bluetooth• As aplicações Python

usam módulo socket padrão para comunicação via Bluetooth, TCP, etc.

Demo: BluePyAtivem seu bluetooth!

Page 41: Remobile

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

Page 42: Remobile

Muito mais! Explore a API!!

• Localização• E32dbm (persistência)• Telephone• Contatos• Sensores….

Demo: Shake your music

Page 43: Remobile

… E que tal um jogo Multi-player ??

Demo: PyBattle* Por favor, 2 guerreiros da platéia!

Page 44: Remobile

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.

Page 45: Remobile

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)

Page 46: Remobile

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

Page 47: Remobile

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

Page 48: Remobile

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

Page 49: Remobile

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()

Page 50: Remobile

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()

Page 51: Remobile

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