Mini-Curso Python para Symbian
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Mini-Curso Python para Symbian

  • 2,260 views
Uploaded on

Palestra ministrada por mim no SECOMP /UFRPE nos dias 14 e 15 de outubro de 2010 sobre Python para Mobile.

Palestra ministrada por mim no SECOMP /UFRPE nos dias 14 e 15 de outubro de 2010 sobre Python para Mobile.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,260
On Slideshare
2,055
From Embeds
205
Number of Embeds
3

Actions

Shares
Downloads
68
Comments
0
Likes
0

Embeds 205

http://www.mobideia.com 201
http://mobideia.blogspot.com.br 3
http://mobideia.blogspot.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide



































































Transcript

  • 1. Introdução ao Desenvolvimento de Aplicações Móveis para plataforma Symbian com Python para S60. Marcel Pinheiro Caraciolo 1
  • 2. Quem é o palestrante ? • Marcel Pinheiro Caraciolo • Atual: Mestrando em ciência da computação pela UFPE • Diretor de Pesquisa e Desenvolvimento na Orygens • Membro e Moderador da célula pernambucana de usuários Python (PUG-PE) • 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
  • 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
  • 4. Smartphones Symbian S60 4
  • 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
  • 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
  • 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
  • 8. Python/ PyS60 8
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 16. Primeiros passos com o PyS60 16
  • 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
  • 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
  • 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
  • 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
  • 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
  • 22. Testando PyS60 scripts • Inicie o PyS60 Script Shell • Clique em Options/ Run Script • Escolha um dos scripts na lista e pressione “Ok” 22
  • 23. Conceitos básicos de desenvolvimento 23
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 32. PyS60 API Tour e Demos 32
  • 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
  • 34. 6789+$ %88:6;< %88:6;<=>:,+"?:!"#$% &'()*+,!-'!.%/.!-'0!1%22)!3 %88:6;<=>:,+"?:!"#$% &'4056%*,!-'!4056%*!-'73 %88:6;<=>:,+"?:!"#$% &'+&.%,!-'!+&.%!3 %88:6;<=>:,+"?:!"#$% &'.85%,!-'!.85%!3 %88:6;<=>:,+"?:!"#$% &'$&99()*+,!-'!:)+%!3 %88:6;<=>:,+"?:!;) #)0'28<%'=#>?@A!-'!B0%*#!3 !"#$%&'(!""#$%&'(#)*+,-!.)-/01+")2/0$3$1$!-04!-#)56 #:7@,+(A $,&$ ;09%$ *%$, $67, B9*, >:,+" 25 )#*+,%-(.%/01(2334 34
  • 35. 6;<8+$ %<<=67> !"#$%&'()"* %<<=67>?#8$,@=()"&&*(+ %<<=67>?#8$,@=(,-&" .*'/#*%.!(0/("11*1(+ %<<=67>?#8$,@=(23&*$! #-.-45"!(0/(6*.#(+ !"#$%&'(!""#$%&'()*+,*+-*./0*1"+./023)4!350506 6#78(9( !"#$%&' ,++8+ :8#7 25 )#*+,%-(.%/01(2334 35
  • 36. Layout básico de uma aplicação S60 • Demo: SampleUI 36
  • 37. 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) 37
  • 38. !"#$%&'"()*+,%-#./ ! !"#$%&'(!""#$%&'(#)*$+,#-./0)!1-)234)!1-)56 6789+$ %88:6;< 8<* =(:!"#$%#&! 6#;9(=(%88:6;<>7:0$6?@:,+"A:!'"#%()*#+!1(:!,)""-.%/+!B 6; 6#;9' CC(+,$:+#-(%($:80, <6$D($D,(6#;9 09E6#?6*1(09E6#?8<* =(6#;9 6; 09E6#?8<* ==(8<*' %88:6;<>#9$,A:!0.12( "3$$#""435!67!$.(4!B ,0-,' %88:6;<>#9$,A:!8%.(1 9)""-.%/!67!#%%.%!B ,0-,' CC(+,$:+#-(F9#,(! -8,G6%0($"8, %88:6;<>#9$,A:!:)($#55#/!B 25 )#*+,%-(.%/01(2334 38
  • 39. !"#$#%&'($ ! !"#$%&'(!""#$%&'"("#")*+,#-.$/0123.!4+.356 6789+$ %88:6;< 6$,7-(=(>:!"#$ %&'()$*!+,'!-$./-$0/.*!+,'!1#.2$(-.3$(!4 6#*,&(=(%88:6;<?898:8@7,#:A6$,7-1(:!5'*6!7 6; 6#*,&(==(3' %88:6;<?#9$,A:!8($.9 3#&:3$!7 ,06; 6#*,&(==(B' %88:6;<?#9$,A:!;&&/!7 ,06; 6#*,&(==(2' %88:6;<?#9$,A:!< /:2$,9#.9!7 ,06; 6#*,&(==(C9#,' %88:6;<?#9$,A:!='(3#.>$ 3.)3$//$?!7 52 )#*+,%-(.%/01(2334 39
  • 40. !"#"$%&'()*&+% !,%+@E(;6,0*(%88,%+-( %;$,+(8+,--6#F(%(0,$$,+(/," ! !"#$%&'(!""#$%&'()*)+,$-./*$(,0+1-$+)(234()!5+1/%$)*6789: 6789+$ %88:6;< #%7,-(=(>:!"#$%&'(!)*+!,'-./!)*+!0.//#'!)*+!123#(!)*+!456!7 6#*,&(=(%88:6;<?-,0,@$69#A06-$B#%7,-1(CD 6; 6#*,&(==(2' 8+6#$(!8*(.-'*9.+:! ,0-,' 8+6#$(!;.+<3'*=3'&>:! 55 )#*+,%-(.%/01(2334 40
  • 41. !"#$%&'(#()$%*+,-%.$ ! !"#$%&'(!""#$%&'(#)*$+,-)-.*$/0+)$,*1 !"#$!%&'()&*+,%-.!"%!/0#12(),-!2.3+%$-)45678 789:+$ %99;7<= #%8,-(>(?;!"#$%&'(!)*+!,'-./!)*+!0.//#'!)*+!123#(!)*+!456!7 -,0,@$7:#-(>(%99;7<=A8;0$7B-,0,@$7:#B07-$C#%8,-1(8$%'$9:.;8)*<= 9+7#$ -,0,@$7:#- '$/#(0,@D,@/8%+/ !,0,@$(8;0$790,(7$,8-(=7$D($D,(9,#(/," E:$(+,%00"(789:+$%#$ 56 )#*+,%-(.%/01(2334 41
  • 42. Layout básico de uma aplicação S60 • Demo: MenuApp 42
  • 43. UI Framework - Componentes 43
  • 44. 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() 44
  • 45. 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 45
  • 46. !"#$%&'(! )*+,'$(-./0()1) 2345$6 &447289,(3%''&:2":,(';'2"85 <(=57(>57+#(7'%(&(#2>625"&$;(&'(9%++,(?76(@%$%(6@2'(2'(35$%('6$&2:@685$9&$#(+&6%$(5" 2"85A&3%'(B(C7!"#$%&'(!)*+!,-..(#/!)*+!0&12-'*3,4!5 2"85D&++' B(C!6/6&2%$7-8.&9(:;#$%&'(<=!)*!6/6&2%$7>-..(#/<=!)*!6/6&2%$76&12-':?>@<=!5 <(E%6(6@%(7'%$(>@55'%(6@%(2"85$3&625"(@%(9&"6'(65('%"# >@52>%'(B(&447289F37+62G'%+%>625"G+2'6H2"85A&3%',(!8A(8B>$C!)*D= 2"85I3' B(!! 85$ 2#J 2" >@52>%'K <(LJ%>76%(6@%('6&6%3%"6H'M('65$%#(2"(6@%(2"85D&++'N+2'6(6@$57:@(6@%(%O&+N'6&6%3%"6, <(>5"O%$6(6@%($%'7+6(65(&('6$2":(&"#(&44%"#(26(65(6@%('3' 6%J6 2"85I3' PB(2"85A&3%'C2#JQ(P(!E*!*F*6.#<(9-'<&2%$G-''6H&?C5==*F*!I*! <(R7%$;(6@%(6%+%4@5"%("73?%$ '3'A73 B(&447289FS7%$;H7!J+@>(#E!)*!.(C.!)*+!FKLLLDKML!= 28 '3'A73K !"#$%&"'($"#)#"*+"'($",-$."&*&%/'"01%0$2 3%''&:2":F'3'G'%"#H'3'A73,(2"85I3'M &447289F"56%H7!N2%$ 6(2.!)*!8$2%!= 01 !"#$%&'()&*+,(-../ 46
  • 47. Vamos construir nosso primeiro Aplicativo! • DEMO: PyFoto / PyHealth 47
  • 48. &1123456&116737+% &1123456&116'%787&9':; &1123456&1169<#= &1123456>#3&+<?842"@73<"A B &1123456C2%$=:; B &1123456"<7%:; B 666 &1123456&116 &1123456&116D%"2 %E378*%=8F&"#+%$ 0/ !"#$%&'()&*+,(-../ 48
  • 49. !"#$%%#! &'()%*+# 1234$5 &336178,(%9- #%7 ,-./012 3$1"5 !"#$%&'()&*+(,,(-! &33:+4;*<'1="&+>? &336178<&33<%@15:*%A:B&"#+%$ C(D615 &336178<&33<515+% C(6!./ 0**! 3$1"5 !0**&$,&123&+411$15! &33:+4;* C(%9-<!4:+4;*>? &33:+4;*<8&15>? 3$1"5 !0**6$78%$21&(#$%,! 0. !"#$%&'()&*+,(-../ 49
  • 50. !"##$"%& '()%*+,) !"#$%&&'(')*'#+"#)"(,-.#&/)*+%")0 Defina sua função callback de saída... ! ! 100"*%-+%)2#&/)*+%")#3%+4#'5')+6#$+)-+). 70'#/()%*+,)0)"1203+*4,(*0560+"#2'+#+4'#&/)*+%")#"89'*+ :",;-('#+"#&/)*+%")#;"%)+'(0#%)#: $'& 7(+*568 ;-00 D#&/)*+%")#%0#',;+E#F%)0+'-$#"&#GH#%)#:II#J#<-5-K -;;/%&3L-;;L'M%+N='EN4-)$.'( O#P/%+ BC 1)$('-0#<-=.>#?@@A 50
  • 51. !"#$%&'(%$)*%+,*( ! -(*.#'/,012%!""#$%&'(%)$!*(%+$%&%,-('./$!00$0'.%1 ! 3.*4$%5",*6%+78"992%2!'($*3+$-1%+$'."-( ### !""<03,6 =$%>8#43<03,6?@$$$A$B+%!(%$!.$'.1(!.,%$3*$!.$43<03,6 3CD%,( !""<03,6#2!'(?@ H%*%+$(3$(G%$IJKC'!.$LI$ ,3-+1%$*3+$K3+%$ '.*3+K!('3.$!C3-($ !"#$#%&'()*' 4,('M%$LCD%,(1 E-'(?@$,!00FC!,6$G!.)0%+ +,+%$- !""<03,6#1'/.!0?@ ;8 4.)+%!1$5!607$899: 51
  • 52. !""#$%&'$()*+(,- &2234567&227'8$%%" 9(!()$*#"' &2234567&227'8$%%" 9(!"#$%&' &2234567&227'8$%%" 9(!"#$$! 01 !"#$%&'()&*+,(-../ 52
  • 53. !""#$%&'$()*+,)- ! .,/$),0*-1$)2*'-"#,13 09316$ &33.0-A<,"B= 8"- "#&4CDE !"#$ 360/$ !"#$%&'(#)! 8"- 5(#-6,7-"CDE %&''()&*+,-./*$01/ 360/$ !*+#,-)&,.! 8"- 5(#-6,70(8)CDE ! 23"*0-4,&/1$5"6, 360/$ !*+#,-)&/+01! $.3'" 0/7$"&8,$1, 8"- 9-$'CDE 360/$ !23(4&5)%&.6)77)/! 8"-0/",&,7.)9"/. &33F'1*+G70H/&'CD &33.0-AG&33G"#0$F+"4F5&/8'"6 I,J.0$ &33.0-AG&33G$0$'" I,.!-.8&"#$%)6! &33.0-AG&33G9"/. I,KC.!"#$%!<,3'&4D<, C.!*+#,-)!<,9&9,!:.!<,L1'.9"F.3D<,C.!;+01!<,L1'.9"F81A/D,D,DM 7,>-)1, 360/$ !<..&(7&1+0&6,11(1=! &33F'1*+ I,"B=G:1F'1*+CD &33F'1*+GA&0$CD 23$-.#)&>$7)/&+1&?@A @@ :/86"&7,;&+'<,=>>? 53
  • 54. !"#$%&'(! )*+,"(-'#./0( 2345$6 2"758,(&4492:; <(=$%&6%(&"(2"'6&">%(5:(6?%(@"758(57A%>6 758(B(2"758C@"758DE <(F9%$G('%&$>?(4?$&'% H9%$G(B(&4492:;CH9%$GD9!"#$%&' ()%*!,(!+#,+!EC+5;%$DE ?26'(B(IJ 2#'(B(IJ <('3'K3%''&L%'DE($%69$"'(3%''&L%(@M'(:5$(&++(3%''&L%'(2"(6?%(NON(2"758 :5$ '3'K2# 2" 758C'3'K3%''&L%'DEP <(Q%6$2%R%(6?%(:9++(3%''&L%(6%86(&"#(>5"R%$6(26(65(+5;%$>&'% 3'LK6%86 B(758C>5"6%"6D'3'K2#EC+5;%$DE 2: 3'LK6%86C:2"#DH9%$GE(SB(TUP <(@:(6?%(6%86(;&'(:59"#,('65$%(&(4$%R2%; ?26'C&44%"#D3'LK6%86IP-0JE 2#'C&44%"#D'3'K2#E <(M2'4+&G(&++($%'9+6'(2"(&(+2'6 2"#%8(B(&4492:;C'%+%>625"K+2'6D?26',(UE 2: 2"#%8(VB(.P <(N?5;(6?%(:9++(6%86(5:(6?%('%+%>6%#(3%''&L% &4492:;C"56%D758C>5"6%"6D2#'I2"#%8JEE 01 !"#$%&'()&*+,(-../ 54
  • 55. !"#$%&'(() ! !"#$%&'(&)*+,-./0+1&2+!3!4/05+67/+0/&80+!9!)7/.&4 ! *+,#-& %88$+:-0+/&+6!+-)/.3!+-((+/:!+/.;! <7/+0/.((+4!!=0+2!08&4=+/&+!3!4/0+>*!?05+$$$@ E4./.-(.F!+!3!4/+)-((G6-)*0 ./##) >P+!9!)7/!+,-./.4L+-)/.3!+&6Q!)/0@J ,:.(!+H!4=+)&4=./.&4IJ ! !"#$-&'0(!!8>.4/!23-(@ K8=-/!+L-;!+0/-/! 01#/2 >Q70/+!9!)7/!+2!-=?+-)/.3!+&6Q!)/0+,./: M!=2-,+0)2!!4 :.L:!2+82.&2./?@ N-70!+O+?.!(= ! !"#$-&'?.!(=>@ DC %4=2!-0+A-*(5+#BBC 55
  • 56. Conectividade: Bluetooth • As aplicações Python usam módulo socket padrão para comunicação via Bluetooth, tcp, etc. • Demo: BluePy • Ativem seu bluetooth! 56
  • 57. 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 57
  • 58. Muito mais! Explore a API!! • Localização • E32dbm (persistência) • Telephone • Contatos • Sensores... • Demos 58
  • 59. !"#$%&! '(()*)+,-."#&/)#%"+&01+2 32&45678 2$34 '%"'3$(5463$7 8 5463$7 %9-,(754%,(&66:52; <+&'' =%43!66>?@ #%2 AA5"57AA>'%+2?@ '%+2B&<<%+%$34%7%$ C((!<<%+%$34%7%$DEF!G5'=&7&>#&7&A25+7%$CH3;I&''J5+7%$>?? '%+2B&<<%+%$34%7%$B'%7A<&++K&<*>#&7&A<&++K&<*C'%+2B4LA<&++K&<*? '%+2B<3:"7%$ C(. #%2 4LA<&++K&<*>'%+2?@ M(J3$('7$%&4('%"'3$(#&7&(7N%(<&++K&<* 5'(N57(9O(754%'(6%$('%<(>P"(OQ..?B( M(RN%(#%S5<%(<&""37(N&"#+%($%'3:$<%(N:"T$L(36%$&753"'(+5*%(6$5"7(5"(7N%(<&++K&<* 2:"<753" M(23$(':<N(N5TN(2$%U:%"<5%'B(!(;3$*&$3:"#(5'(73('&46+%(7N%(#&7&(&'(#%43"'7$&7%#(K%+3;B 52 '%+2B<3:"7%$ V O(CC .@ 6$5"7 WD@V',(E@V',(F@V'W(V >'%+2B&<<%+%$34%7%$BG, '%+2B&<<%+%$34%7%$BL,('%+2B&<<%+%$34%7%$BX? '%+2B<3:"7%$ C('%+2B<3:"7%$ Y(Z #%2 $:">'%+2?@ '%+2B&<<%+%$34%7%$B'7&$7A+5'7%"5"T>? #%2 %G57A*%LAN&"#+%$>?@ M(=5'<3""%<7(2$34(7N%('%"'3$(&"#(%G57 T+3K&+ # #B&<<%+%$34%7%$B'736A+5'7%"5"T>? 6$5"7 W[G575"T(!<<%+3$34%7%$W &66A+3<*B'5T"&+>? 52 AA"&4%AA(CC AA4&5"AA@ &66:52;B&66B%G57A*%LAN&"#+%$ C(%G57A*%LAN&"#+%$ #(C(=%43!66>? #B$:">? &66A+3<* C(%9-B!3A+3<*>? 01 !"#$%&'()&*+,(-../ &66A+3<*B;&57>? 59
  • 60. ! 1234$5 &336178,%9-,'%"'4$ #%7 :'5&56';< =>&++?&@* 76"@514"(74$($%A6+&$(&@@%+%$42%5%$('5&56'= 3$1"5 =B<(C#,(D<(C#,(E<(C#=(C(:'5&56'FG#&5&HIGJ,('5&56'FG#&5&H-GJ,('5&56'FG#&5&H9GJ; #%7 :;< K(L1'@4""%@5(7$42(5M%('%"'4$(&"#(%B15 &@@H'%"'4$N#1'@4""%@5:; &33H+4@*N'1A"&+:; &336178N&33N%B15H*%DHM&"#+%$ O(%B15H*%DHM&"#+%$ K(P%5$1%Q%(5M%(&@@%+%$&514"('%"'4$ '%"'4$H5D3% O('%"'4$N'%"'4$':;FG!@@R%"'4$GJ K(>$%&5%(&"(&@@%+%$&514"('%"'4$(4?S%@5 &@@H'%"'4$ O('%"'4$NR%"'4$:'%"'4$H5D3%FG1#GJ,'%"'4$H5D3%FG@&5%A4$DGJ; K(>4""%@5(54(5M%('%"'4$ &@@H'%"'4$N@4""%@5:A%5H'%"'4$H#&5&; K(T&15(74$('%"'4$(#&5&(&"#(5M%(%B15(%Q%"5 &33H+4@* O(%9-N!4H+4@*:; &33H+4@*N8&15:; 00 !"#$%&'()&*+,(-../ 60
  • 61. Já imaginou controlar seu PC ? • Bluetooth + Sensores • PyAcceleRemoter • Servidor em Python 61
  • 62. ... e que tal um jogo Multi-player ?? • Demos • PyBattle 62
  • 63. 63
  • 64. 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. 64
  • 65. 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! 65
  • 66. • Obrigado! Dúvidas?! • Marcel Pinheiro Caraciolo (caraciol@gmail.com) twitter: marcelcaraciolo 66
  • 67. Introdução ao Desenvolvimento de Aplicações Móveis para plataforma Symbian com Python para S60. Marcel Pinheiro Caraciolo 67