SlideShare a Scribd company logo
1 of 67
Introdução ao Desenvolvimento de Aplicações Móveis
    para plataforma Symbian com Python para S60.
                Marcel Pinheiro Caraciolo


                        1
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
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
Smartphones Symbian S60



           4
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
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
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
Python/ PyS60



      8
... 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
... 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
... 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
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
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
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
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
Primeiros passos com o
        PyS60



          16
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
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
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
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
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
Testando PyS60 scripts
•   Inicie o PyS60 Script Shell

•   Clique em Options/ Run Script

•   Escolha um dos scripts na lista e pressione “Ok”




                                      22
Conceitos básicos de
 desenvolvimento



         23
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
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
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
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
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
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
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
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
PyS60 API Tour e Demos



          32
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
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
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
Layout básico de uma aplicação S60




•   Demo: SampleUI




                     36
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
!"#$%&'"()*+,%-#./

!   !"#$%&'(!""#$%&'(#)*$+,#-./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
!"#$#%&'($

!   !"#$%&'(!""#$%&'"("#")*+,#-.$/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
!"#"$%&'()*&+%                                !,%+@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
!"#$%&'(#()$%*+,-%.$

!   !"#$%&'(!""#$%&'(#)*$+,-)-.*$/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
Layout básico de uma aplicação S60




•   Demo: MenuApp




                     42
UI Framework - Componentes




            43
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
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
!"#$%&'(! )*+,'$(-./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
Vamos construir nosso primeiro Aplicativo!




 •   DEMO: PyFoto / PyHealth




                       47
&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
!"#$%%#! &'()%*+#
      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
!"##$"%& '()%*+,)

    !"#$%&&'(')*'#+"#)"(,-.#&/)*+%")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
!"#$%&'(%$)*%+,*(

!   -(*.#'/,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
!""#$%&'$()*+(,-




&2234567&227'8$%%" 9(!()$*#"'   &2234567&227'8$%%" 9(!"#$%&'   &2234567&227'8$%%" 9(!"#$$!




     01                              !"#$%&'()&*+,(-../
                                              52
!""#$%&'$()*+,)-

!   .,/$),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
!"#$%&'(! )*+,"(-'#./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
!"#$%&'(()

!   !"#$%&'(&)*+,-./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
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
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
Muito mais! Explore a API!!



•   Localização

•   E32dbm (persistência)

•   Telephone

•   Contatos

•   Sensores...

    •   Demos



                            58
!"#$%&! '(()*)+,-."#&/)#%"+&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
!
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
Já imaginou controlar seu PC ?




•   Bluetooth + Sensores

    •   PyAcceleRemoter

    •   Servidor em Python




                           61
... e que tal um jogo Multi-player ??




•   Demos

    •   PyBattle




                           62
63
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
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
• Obrigado!   Dúvidas?!




• Marcel Pinheiro Caraciolo
  (caraciol@gmail.com)
  twitter: marcelcaraciolo
  66
Introdução ao Desenvolvimento de Aplicações Móveis
    para plataforma Symbian com Python para S60.
                Marcel Pinheiro Caraciolo


                        67

More Related Content

Viewers also liked

Python com baterias incluídas v2.0
Python com baterias incluídas v2.0Python com baterias incluídas v2.0
Python com baterias incluídas v2.0Jonh Edson
 
Desenvolvimento web com Python, Zope e Plone
Desenvolvimento web com Python, Zope e PloneDesenvolvimento web com Python, Zope e Plone
Desenvolvimento web com Python, Zope e PloneJacson Tiola
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução BásicaChristian Perone
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyRelsi Maron
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonJanderson Campêlo
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do GoogleLuciano Ramalho
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com PythonJardel Weyrich
 
Ensinando a programar através do Python turtle graphics
Ensinando a programar através do Python turtle graphicsEnsinando a programar através do Python turtle graphics
Ensinando a programar através do Python turtle graphicsGuilherme Medeiros
 
Oficina Python e Google App Engine
Oficina Python e Google App EngineOficina Python e Google App Engine
Oficina Python e Google App EngineRodrigo Amaral
 

Viewers also liked (14)

Python na Web
Python na WebPython na Web
Python na Web
 
Python com baterias incluídas v2.0
Python com baterias incluídas v2.0Python com baterias incluídas v2.0
Python com baterias incluídas v2.0
 
Desenvolvimento web com Python, Zope e Plone
Desenvolvimento web com Python, Zope e PloneDesenvolvimento web com Python, Zope e Plone
Desenvolvimento web com Python, Zope e Plone
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Python e MongoDB - Ensol
Python e MongoDB - EnsolPython e MongoDB - Ensol
Python e MongoDB - Ensol
 
Introducao python 2010
Introducao python 2010Introducao python 2010
Introducao python 2010
 
Diversidade na Comunidade Python
Diversidade na Comunidade PythonDiversidade na Comunidade Python
Diversidade na Comunidade Python
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2py
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - Python
 
Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do Google
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python
 
Ensinando a programar através do Python turtle graphics
Ensinando a programar através do Python turtle graphicsEnsinando a programar através do Python turtle graphics
Ensinando a programar através do Python turtle graphics
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
Oficina Python e Google App Engine
Oficina Python e Google App EngineOficina Python e Google App Engine
Oficina Python e Google App Engine
 

Similar to Mini-Curso Python para Symbian

Programando symbian aula_1
Programando symbian aula_1Programando symbian aula_1
Programando symbian aula_1Talita Carvalho
 
Apresentação Minicurso PyS60
Apresentação Minicurso PyS60Apresentação Minicurso PyS60
Apresentação Minicurso PyS60Antonio Santana
 
Python no Celular
Python no CelularPython no Celular
Python no Celulariuridiniz
 
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataformaAndroid Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataformaFelipe Silveira
 
Write once, run "everywhere"
Write once, run "everywhere"Write once, run "everywhere"
Write once, run "everywhere"Stefan Horochovec
 
Mono mecadocoorporativo-latino2010
Mono mecadocoorporativo-latino2010Mono mecadocoorporativo-latino2010
Mono mecadocoorporativo-latino2010Alessandro Binhara
 
Projeto arrastão projeto fábrica de software
Projeto arrastão   projeto fábrica de softwareProjeto arrastão   projeto fábrica de software
Projeto arrastão projeto fábrica de softwareAlan Correa Morais
 
Plataformas Para Desenvolvimento Em Celulares
Plataformas Para Desenvolvimento Em CelularesPlataformas Para Desenvolvimento Em Celulares
Plataformas Para Desenvolvimento Em CelularesAndré Otero
 
O Projeto Mono: Aplicações .NET para sistemas não Windows
O Projeto Mono: Aplicações .NET para sistemas não WindowsO Projeto Mono: Aplicações .NET para sistemas não Windows
O Projeto Mono: Aplicações .NET para sistemas não WindowsAlessandro Binhara
 
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComo deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComunidade NetPonto
 

Similar to Mini-Curso Python para Symbian (20)

Py S60
Py S60Py S60
Py S60
 
Programando symbian aula_1
Programando symbian aula_1Programando symbian aula_1
Programando symbian aula_1
 
Sokoban com PyS60
Sokoban com PyS60Sokoban com PyS60
Sokoban com PyS60
 
Curso Python for S60
Curso Python for S60Curso Python for S60
Curso Python for S60
 
Python e suas aplicações
Python e suas aplicaçõesPython e suas aplicações
Python e suas aplicações
 
Python for Maemo
Python for MaemoPython for Maemo
Python for Maemo
 
Apresentação Minicurso PyS60
Apresentação Minicurso PyS60Apresentação Minicurso PyS60
Apresentação Minicurso PyS60
 
Python e frameworks web
Python e frameworks webPython e frameworks web
Python e frameworks web
 
Python no Celular
Python no CelularPython no Celular
Python no Celular
 
Int305 projeto mono-final
Int305 projeto mono-finalInt305 projeto mono-final
Int305 projeto mono-final
 
Janela Livre
Janela LivreJanela Livre
Janela Livre
 
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataformaAndroid Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
Android Core Aula 1 - Histórico, Arquitetura e Compilação da plataforma
 
Write once, run "everywhere"
Write once, run "everywhere"Write once, run "everywhere"
Write once, run "everywhere"
 
ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01ESTRUTURA DE DADOS (JAVA) AULA 01
ESTRUTURA DE DADOS (JAVA) AULA 01
 
Mono mecadocoorporativo-latino2010
Mono mecadocoorporativo-latino2010Mono mecadocoorporativo-latino2010
Mono mecadocoorporativo-latino2010
 
Projeto arrastão projeto fábrica de software
Projeto arrastão   projeto fábrica de softwareProjeto arrastão   projeto fábrica de software
Projeto arrastão projeto fábrica de software
 
Plataformas Para Desenvolvimento Em Celulares
Plataformas Para Desenvolvimento Em CelularesPlataformas Para Desenvolvimento Em Celulares
Plataformas Para Desenvolvimento Em Celulares
 
O Projeto Mono: Aplicações .NET para sistemas não Windows
O Projeto Mono: Aplicações .NET para sistemas não WindowsO Projeto Mono: Aplicações .NET para sistemas não Windows
O Projeto Mono: Aplicações .NET para sistemas não Windows
 
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComo deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
 
Mono
MonoMono
Mono
 

More from Marcel Caraciolo

Como interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com PythonComo interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com PythonMarcel Caraciolo
 
Joblib: Lightweight pipelining for parallel jobs (v2)
Joblib:  Lightweight pipelining for parallel jobs (v2)Joblib:  Lightweight pipelining for parallel jobs (v2)
Joblib: Lightweight pipelining for parallel jobs (v2)Marcel Caraciolo
 
Construindo softwares de bioinformática para análises clínicas : Desafios e...
Construindo softwares  de bioinformática  para análises clínicas : Desafios e...Construindo softwares  de bioinformática  para análises clínicas : Desafios e...
Construindo softwares de bioinformática para análises clínicas : Desafios e...Marcel Caraciolo
 
Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2Marcel Caraciolo
 
Como Python pode ajudar na automação do seu laboratório
Como Python pode ajudar na automação do  seu laboratórioComo Python pode ajudar na automação do  seu laboratório
Como Python pode ajudar na automação do seu laboratórioMarcel Caraciolo
 
Python on Science ? Yes, We can.
Python on Science ?   Yes, We can.Python on Science ?   Yes, We can.
Python on Science ? Yes, We can.Marcel Caraciolo
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Marcel Caraciolo
 
Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)Marcel Caraciolo
 
Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?Marcel Caraciolo
 
Benchy, python framework for performance benchmarking of Python Scripts
Benchy, python framework for performance benchmarking  of Python ScriptsBenchy, python framework for performance benchmarking  of Python Scripts
Benchy, python framework for performance benchmarking of Python ScriptsMarcel Caraciolo
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Marcel Caraciolo
 
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...Marcel Caraciolo
 
Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks Marcel Caraciolo
 
Construindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com PythonConstruindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com PythonMarcel Caraciolo
 
Python, A pílula Azul da programação
Python, A pílula Azul da programaçãoPython, A pílula Azul da programação
Python, A pílula Azul da programaçãoMarcel Caraciolo
 
Construindo Soluções Científicas com Big Data & MapReduce
Construindo Soluções Científicas com Big Data & MapReduceConstruindo Soluções Científicas com Big Data & MapReduce
Construindo Soluções Científicas com Big Data & MapReduceMarcel Caraciolo
 
Como Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no BrasilComo Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no BrasilMarcel Caraciolo
 
Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?Marcel Caraciolo
 
Aula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursosAula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursosMarcel Caraciolo
 

More from Marcel Caraciolo (20)

Como interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com PythonComo interpretar seu próprio genoma com Python
Como interpretar seu próprio genoma com Python
 
Joblib: Lightweight pipelining for parallel jobs (v2)
Joblib:  Lightweight pipelining for parallel jobs (v2)Joblib:  Lightweight pipelining for parallel jobs (v2)
Joblib: Lightweight pipelining for parallel jobs (v2)
 
Construindo softwares de bioinformática para análises clínicas : Desafios e...
Construindo softwares  de bioinformática  para análises clínicas : Desafios e...Construindo softwares  de bioinformática  para análises clínicas : Desafios e...
Construindo softwares de bioinformática para análises clínicas : Desafios e...
 
Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2Como Python ajudou a automatizar o nosso laboratório v.2
Como Python ajudou a automatizar o nosso laboratório v.2
 
Como Python pode ajudar na automação do seu laboratório
Como Python pode ajudar na automação do  seu laboratórioComo Python pode ajudar na automação do  seu laboratório
Como Python pode ajudar na automação do seu laboratório
 
Python on Science ? Yes, We can.
Python on Science ?   Yes, We can.Python on Science ?   Yes, We can.
Python on Science ? Yes, We can.
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3
 
Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)Recommender Systems with Ruby (adding machine learning, statistics, etc)
Recommender Systems with Ruby (adding machine learning, statistics, etc)
 
Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?Opensource - Como começar e dá dinheiro ?
Opensource - Como começar e dá dinheiro ?
 
Big Data com Python
Big Data com PythonBig Data com Python
Big Data com Python
 
Benchy, python framework for performance benchmarking of Python Scripts
Benchy, python framework for performance benchmarking  of Python ScriptsBenchy, python framework for performance benchmarking  of Python Scripts
Benchy, python framework for performance benchmarking of Python Scripts
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?
 
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
GeoMapper, Python Script for Visualizing Data on Social Networks with Geo-loc...
 
Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks Benchy: Lightweight framework for Performance Benchmarks
Benchy: Lightweight framework for Performance Benchmarks
 
Construindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com PythonConstruindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com Python
 
Python, A pílula Azul da programação
Python, A pílula Azul da programaçãoPython, A pílula Azul da programação
Python, A pílula Azul da programação
 
Construindo Soluções Científicas com Big Data & MapReduce
Construindo Soluções Científicas com Big Data & MapReduceConstruindo Soluções Científicas com Big Data & MapReduce
Construindo Soluções Científicas com Big Data & MapReduce
 
Como Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no BrasilComo Python está mudando a forma de aprendizagem à distância no Brasil
Como Python está mudando a forma de aprendizagem à distância no Brasil
 
Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?Novas Tendências para a Educação a Distância: Como reinventar a educação ?
Novas Tendências para a Educação a Distância: Como reinventar a educação ?
 
Aula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursosAula WebCrawlers com Regex - PyCursos
Aula WebCrawlers com Regex - PyCursos
 

Mini-Curso Python para Symbian

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

Editor's Notes