Remobile

  • 2,336 views
Uploaded on

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

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

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
2,336
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
53
Comments
2
Likes
1

Embeds 0

No embeds

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 à programação Python para smartphones Nokia S60 Marcel Pinheiro Caraciolo
  • 2. Quem é o palestrante ?
    • Marcel Pinheiro Caraciolo
      • Atual : Mestrando em ciência da computação pelo CIN/UFPE.
      • Engenheiro da computação pela POLI/UPE.
      • Experiência: TIM (analista de sistemas), I2 Tecnologia (consultor de desenvolvimento) , C.E.S.A.R (engenheiro de sistemas).
    • Experiência com computação móvel e inteligente:
      • Blog Mobidéia (http://mobideia.blogspot.com) – Mobile
      • Blog A.I. in Motion (http://aimotion.blogspot.com) – I.A.
    • Experiência com Python há quase 1 ano.
  • 3. Agenda
    • Smartphones Symbian S60
    • Python / Python para S60 (PyS60)
    • Primeiros passos com o PyS60.
      • Arquivos e instaladores.
      • Instalação do interpretador e execução de scripts Python.
    • Conceitos básicos de desenvolvimento
      • Ferramentas, emuladores, etc.
      • Criação de um simples aplicativo executável.
    • PyS60 API Tour e Exemplos
    • Conclusão
  • 4. Smartphones Symbian S60
  • 5. O que são celulares S60?
    • Smartphones - “celulares inteligentes” - com velocidade de um PC@1998.
    • Sistema operacional Symbian (consórcio mantido por diversos fabricantes de dispositivos móveis).
      • 2008 – Nokia adquire o Symbian e funda o “ Symbian Foundation ”.
    • Plataforma Série 60: Symbian + UI + recursos adicionais.
  • 6. Smartphones Nokia
    • Grande parte dos celulares S60 são da Nokia.
    • Concorrentes diretos do Symbian S60:
      • Baseados em Symbian: S80, S90, UIQ.
      • Não baseados em Symbian: Android OS, Windows Mobile, Mac OS X (Iphone) - todos não smartphones Nokia.
    • Nova linha de aparelhos S60 “TouchScreen” :
      • Nokia 5800 XpressMusic, N97 .
  • 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-10 anos.
    • Várias opções de linguagem: J2ME, C++, Python, FlashLite, JavaScript, C, etc.
    • Plataforma aberta e SDK gratuito
    • Existe uma comunidade de desenvolvedores
    • Dispositivos são computacionalmente poderosos (evita ter de ”escovar bit”)
  • 8. Python / PyS60
  • 9.
    • Pelas virtudes naturais do Python :)
    • Desenvolvimento C++ para dispositivos móveis é ainda mais árido que para desktop.
      • Desenvolvimento no PC, uso real no celular; computadores completamente diferentes!
      • Emulador Symbian no PC diverge do celular
      • Pouco software livre e/ou aberto para consulta
      • Muitas diferenças entre versões do S60, mesmo entre minor releases (”feature packs”)‏
    … E por que usar o Python para S60?
  • 10. … . E porque usar o Python para S60?
    • API mais estável, pois as diferenças entre versões são resolvidas no pacote Python
    • Boa parte das bibliotecas padrão do Python está disponível no PyS60
    • A depuração no dispositivo é mais fácil
    • Torna muito mais fácil o acesso a recursos como câmera ou SMS, em relação a C++
    • Comunidade muito mais atuante
      • http://pys60.sourceforge.net
  • 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 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.
  • 12. A “cara” de Python def get_quote(acao): url = &quot;http://www.bovespa.com.br/...” pagina = urllib.urlopen(url).read() inicio = pagina.find(&quot;R$&quot;)+2 final = pagina.find(&quot;</td>&quot;, inicio) cotacao = s[inicio:final].strip() try: valor = int(cotacao)/100.0 except ValueError: valor = 0 # deixe como zero return valor
  • 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.
  • 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 Windows)
  • 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 maioria das bibliotecas do S60
      • e32
      • sysinfo
      • appuifw
      • graphics
      • camera
      • keycapture
      • audio
      • telephone
      • messaging
  • 16. Primeiros passos com o PyS60
  • 17. Python nos celulares Symbian S60
    • Projeto hospedado no site SourceForge: http://sourceforge.net/projects/pys60
    • Novas versões no site do Garage Maemo:
    • https://garage.maemo.org/projects/pys60/
      • Código-Fonte
      • Documentação
      • Diversas distribuições:
        • Interpretador / Script Shell
        • SDK
        • Versões: 1º Ed. , 2º Ed. , 3ºEd. (FP1, FP2).
        • Site com informações sobre as versões do seu aparelho:
          • http://www.forum.nokia.com/devices/matrix_all_1.html
  • 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_<yourS60version>.SIS para celulares
      • PythonForS60_1_x_x_SDK_<yourS60SDK>.zip para executar scripts Python em emuladores S60 e compilar suas próprias extensões (Apenas ambiente Windows).
    • pyS60 Script Shell:
      • Ideal para testes e desenvolvimento de scripts.
      • PythonScriptShell_1_x_x_<yourS60version>.SIS
      • Disponível também em versão não assinada “unsigned” ,caso novas funcionalidades sejam requeridas.
    • Documentação e API.
    • Release notes (As novidades da versão!)
  • 19. Primeiros passos – PyS60 em um celular
    • Instale o pacote do interpretador PyS60. No nosso exemplo seria um Nokia N95 que é um S60 3 rd . Edição FP1 então instalamos o PythonForS60_1_4_5_3rd.SIS
    • Você pode instalar pelo PC Suite (Windows) ou enviando o arquivo .SIS via bluetooth (Linux ou Mac) ou ainda pelo browser do seu aparelho.
    • Instalado o interpretador, o próximo passo é instalar o PyS60 Script Shell.
  • 20. Primeiros passos – PyS60 em um celular
    • Instale o PyS60 script Shell. No nosso exemplo, usamos o Nokia N95 que é um aparelho 3 rd . Edição FP1, então instalamos PythonScriptShell_1_4_5_3rd.SIS
    • Script shell é extremamente útil para executar e testar seus scripts, através de um console.
    • O aplicativo Python é visível no menu principal de aplicativos do seu aparelho.
  • 21. Primeiros passos – PyS60 em um celular
    • Run script -> Lê os scripts armazenados em E:Python and C:Python
    • Há um console interativo se desejar editar código direto no aparelho.
    • Bluetooth Console para edição remota de seus scripts Python.
    • Não necessário para aplicativos executáveis em Python!
  • 22. Testando PyS60 scripts
    • Inicie o PyS60 Script Shell
    • Clique em Options / Run Script
    • Escolha um dos scripts na lista e pressione ‘OK’
  • 23. Conceitos básicos de desenvolvimento
  • 24. Ferramentas de desenvolvimento-Windows
    • Instalação e execução do interpretador Python na sua máquina  ( http://www.python.org/download/ ) - Python 2.5.x
    • S60 Platform SDKs for Symbian OS, for C++  Provê o ambiente de emulação do Symbian no PC para a criação e execução de scripts em Python e a criação de extensões ( www.forum.nokia.com/tools ).
    • Pacote PythonForS60_1_x_x_SDK_3rdEd.zip para ativar o Python no S60 SDK.
    • Ferramenta para empacotar seus scripts Python em arquivos instaláveis .SIS (Ensymble - http://www.nbl.fi/~nbl928/ensymble.html ) ou Py2sis (vem junto com o SDK).
    • Se você estiver usando o Ensymble, baixe o utilitário de linhas de comando OpenSSL -> http://www.stunnel.org/download/binaries.html
    • Dispositivo S60 com cartão de memória (opcional)
    • Nokia PC Suite – (opcional)
  • 25. Ferramentas de desenvolvimento-Windows
    • Como instalar o SDK para PyS60:
    • Faça o download do s60 __??__sdk._fp?.zip, extraia seu conteúdo e execute o setup.exe
    • Faça o download do PythonForS60_1_x_x_SDK_3rdEd.zip , extraia seu conteúdo (sdk_files.zip) e substitua a pasta na raiz do Symbian.
  • 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_xxEpoc32winscwcpython
    • 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!’)
  • 27. Ferramentas de desenvolvimento - Linux
    • Alguma versão do Python instalada (Possivelmente sua distribuição Linux já deve ter uma! )
    • Não há um ambiente de emulação oficial  (GNUPOC)
    • Ferramenta de criação de arquivos instaláveis .SIS -(Ensymble - http://www.nbl.fi/~nbl928/ensymble.html ) + utilitário OpenSSL
    • PyS60-compat – Biblioteca para emulação de algumas APIs do PyS60
      • ( http://sourceforge.net/projects/pys60-compat/ )
    • Aparelho Symbian S60 com um cartão de memória (pode ajudar no teste de scripts!)
    • Conectividade Bluetooth ativa
  • 28. Ferramentas de desenvolvimento - Linux
    • Crie seu script .py em qualquer editor de texto de sua preferência
    • Envie seu script para a pasta E:Python utilizando obexftp ou conectando o telefone como drive usb.
    • Inicie o PyS60 Script Shell
    • Escolha o script da lista
    • Clique “Select” para executá-lo.
    • Solução alternativa:
      • PyS60-compat - UI e gráficos
      • http://sourceforge.net/projects/pys60-compat/
  • 29. Criando aplicativos Python instaláveis
    • Caminho mais fácil: Ensymble
      • http://www.nbl.fi/~nbl928/ensymble.html
      • Para S60 3 rd Edição, PyS60 1.4.0 or versão posterior
      • Linux, Mac, Windows
    • Outra alternativa: py2sis junto com a distribuição do código-fonte do Py-S60
      • Na versão 1.9.x – Com interface gráfica!
    • Ambas ferramentas criam arquivos .sis que podem ser instalados no telefone como um aplicativo nativo.
      • Aparecem no menu principal e tem seu próprio ícone
    C:devpython>ensymble_python2.5-0.26.py py2sis simplecube.py
  • 30. Ops… Segurança do Symbian afeta o Python!
    • www.symbiansigned.com
    • Acessando algumas funcionalidades “capabilities” específicas do telefone dependem de certificado do desenvolvedor assinado pela Symbian
      • Captura de teclas(fora da aplicação)
      • Leitura do cell ID
      • Leitura do GPS (interno)
      • Ajuste do relógio do sistema
      • Acesso a arquivos protegidos do sistema
      • Obtenha seu certificado (ID) no Open Signed Online
      • Registre-se no www.symbiansigned.com . É gratuito!
      • Registre o IMEI do seu fone com o certificado (devcert)
      • Assine sua aplicação com o certificado
      • Instale seu aplicativo no telefone
  • 31. PyS60 API Tour e Exemplos
  • 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 and RSK
    • Defina funções de tratamento de eventos para o menu Options e a tecla Exit
    • Espere por uma entrada do usuário usando uma “trava” -Active Object lock.
  • 33.
      • Demo: SampleUIApp
    Layout básico de uma aplicação S60
  • 34.
    • Controles de UI são implementadas como tipos em Python:
      • ListBox
      • Text
      • Canvas
    • Controles são atribuídos no corpo do aplicativo (usando app.body = control )
    • Caixas de diálogo (Dialogs) são implementadas como funções chamadas a partir do módulo appuifw .
    • Objetos específicos para tratamento de conteúdo (Content_handlers para acesso à arquivos).
    Layout básico de uma aplicação S60
  • 35. Layout básico de uma aplicação S60
      • Demo 2: MenuApp
  • 36. UI framework – Componentes
  • 37. Multimídia – audio, video, camera
    • Aplicativos multimídia podem ser desenvolvidos através dos módulos:
      • Audio – permite a reprodução e gravação de áudio e a funcionalidade de texto-voz (Inclusive fazer trotes!)
          • s=audio.Sound.open(u”c:rquivo.wav”)‏
          • s.record()‏,s.stop()‏, s.play()
      • Camera – Para tirar fotos, gravar vídeos, controlar aspectos da câmera e acessar configurações da câmera
          • Image i = camera.take_photo()‏
          • camera.start_finder(função), camera.stop_finder()
      • Graphics – Manipulação de imagens
          • graphics.Image.open(&quot;e:rea.png&quot;), graphics.Image.save(“e:hoto.jpg”)
      • ** Sysinfo – Obtenha informações do seu aparelho.
        • sysinfo.battery(),.imei(),.signal_dbm()
  • 38. Messaging e Inbox – sms/mms
    • O módulo Inbox permite você manipular sua caixa de entrada de mensagens
    • O módulo Messaging dá ao seu aplicativo o poder de enviar SMS e MMS
      • messaging.sms_send(”96094364”, u”Oi”)‏
      • messaging.mms_send(...)‏
  • 39. Vamos construir nosso primeiro Aplicativo! 1. Importe todos módulos necessários 2. Ajuste o tamanho da tela(normal, large, full) 3. Crie a lógica da sua aplicação ... 4. Crie o menu da aplicação (se necessário) 5. Sete o evento de saída (exit key handler) 6. Sete o título da aplicação 7. Verifique os Actives Objects (Aos) 8. Sete o corpo da aplicação(text ou canvas ou listbox or none) 9. Crie um main loop (ex. While loop) se necessário
      • Demo: PyFoto
  • 40. Conectividade: Bluetooth
    • As aplicações Python usam módulo socket padrão para comunicação via Bluetooth, TCP, etc.
      • Demo: BluePy
      • Ativem seu bluetooth!
  • 41. Conectividade: HTTP e até XML!!
    • Biblioteca urllib pode ser usada para HTTP e comunicações Web
    • Construa seus protocolos em scripts python para se comunicar com aplicações web (REST)
      • Demo: PyFlicker
  • 42. Muito mais! Explore a API!!
    • Localização
    • E32dbm (persistência)
    • Telephone
    • Contatos
    • Sensores….
      • Demo: Shake your music
  • 43. … E que tal um jogo Multi-player ??
      • Demo: PyBattle
      • * Por favor, 2 guerreiros da platéia!
  • 44. O céu… ops, “Python” é o limite!
    • Vários aplicativos podem ser desenvolvidos com Python!
      • É só ter sua idéia, e botar a mão na massa!
    • Extensões para PyS60
      • Crie suas extensões para incrementar seus aplicativos! (Open C/ C++)!
      • Flyer (FlashLite UI + PyS60)
    • Games
      • PyGame for PyS60 , OpenGames.
    • Telefone
      • CallStatus, Keypress, PyS60USB
    • Web
      • QrCodes, TwitterAPI, OpenSocial, WordMobi
    • Outros
      • PySchart, TunnerAPI, A.I. , GSM/3G Info, etc.
  • 45. Conclusão
    • Introdução a Linguagem Python
    • www.python.org/doc
    • Vários exemplos do livro:
    • http://www.mobilepythonbook.com
    • Comunidade sempre à disposição !
    • http://wiki.forum.nokia.com/index.php/Category:Python
    • http://wiki.opensource.nokia.com/projects/Python_for_S60
    • http://croozeus.googlepages.com/pyS60
    • Contribua com artigos, posts em fóruns, aplicativos, etc. Você pode se tornar um Forum Nokia Champion e ganhar prêmios! ( http://www.forum.nokia.com )
  • 46. Obrigado! Dúvidas?! Marcel Pinheiro Caraciolo [email_address]
  • 47. Introdução à programação Python para smartphones Nokia S60 Marcel Pinheiro Caraciolo
  • 48. Ensymble Usar o &quot;ensymble&quot; para gerar o arquivo SIS ( The Ensymble developer utilities for Symbian OS ): ensymble py2sis <source> <target> --uid=<uid> --appname= <appname> http://wiki.forum.nokia.com/index.php/How_to_make_py_to_sis_for_3rd_Editon_devices
  • 49. Trote.py import telephone, audio, time s = audio.Sound.open(“E:ROTE.WAV”) telephone.dial(“190”) # espere atender s.record() time.sleep(10) telephone.hang_up() s.stop() # divirta-se com o resultado s.play()
  • 50. Connectivity – urllib Source: webclient.py import urllib, appuifw, e32 URL = &quot;http://www.python.org/images/python-logo.gif&quot; dest_file = u&quot;C:atamagesython-logo.gif&quot; urllib.urlretrieve(URL, dest_file) lock = e32.Ao_lock() viewer = appuifw.Content_handler(lock.signal) viewer.open(dest_file) lock.wait()
  • 51. import camera, e32, socket, appuifw PHOTO = u&quot;C:atamagest_photo_send.jpg&quot; def send_photo(): try: address, services = socket.bt_obex_discover() except: appuifw.note(u&quot;OBEX Push not available&quot;, &quot;error&quot;) return if u'OBEX Object Push' in services: channel = services[u'OBEX Object Push'] socket.bt_obex_send_file(address, channel, PHOTO) appuifw.note(u&quot;photo sent&quot;, &quot;info&quot;) else: appuifw.note(u&quot;OBEX Push not available&quot;, &quot;error&quot;) Connectivity – bluetooth photo sender Source: bluetooth.py