SlideShare una empresa de Scribd logo
1 de 39
Descargar para leer sin conexión
Implementação de Aplicações Móveis
e Jogos com Python
Review
 1ª Aula
 Apresentação de Python
 Cenário de Python em Mobile & Embedded
 Ciclo de Desenvolvimento de linguagens interpretadas
 Sintaxe de Python
 Interpretador Interativo
 Variáveis e Tipos
 Strings
 Listas e Tuplas
 Dicionários
 Laços
 Funções
Orientação a Objetos
com Python
Orientação a Objetos com Python
 A estrutura de uma Classe
class NomeDaClasse(object):
def metodoUm(self, argumento1):
self.atributo1 = argumento1
def metodoDois(self):
print self.atributo1
 Gerando uma instância
MeuObjeto = NomeDaClasse()
Orientação a Objetos com Python
 O método construtor
class NomeDaClasse(object):
def __init__(self, argumento1):
print 'Fui inicializado!'
self.atributo1 = argumento1
def metodoDois(self):
print self.atributo1
Orientação a Objetos com Python
 Atributos Privados e Protegidos
 Não existe implementação que assegure isso
 Convenção
 _nomeDoMetodo (1 underscore)
 Não deve ser acessado externamente
class NomeDaClasse(object):
def __init__(self, argumento1):
print 'Fui inicializado!'
self.atributo1 = argumento1
def __metodoDois(self):
print 'Esse método é privado! :)'
Orientação a Objetos com Python
 Alguns Exemplos
 Personagem de Jogo
 Evento
Orientação a Objetos com Python
 Atributos de Classe
>>> class Pessoa(object):
... populacao = 0
... def __init__(self):
... self.__class__.populacao+=1
...
>>> flavio = Pessoa()
>>> Pessoa.populacao
1
>>> igor = Pessoa()
>>> Pessoa.populacao
2
Orientação a Objetos com Python
 Métodos Estáticos
class MyClass(object):
def SomeMethod(x):
print x
SomeMethod = staticmethod(SomeMethod)
>>> MyClass.SomeMethod(15)
15
>>> obj = MyClass()
>>> obj.SomeMethod(15)
15
Orientação a Objetos com Python
 Métodos de Classe
class MyClass(object):
def SomeMethod(cls, x):
print cls, x
SomeMethod = classmethod(SomeMethod)
>>> MyClass.SomeMethod(15)
__main__.MyClass 15
>>> obj = MyClass()
>>> obj.SomeMethod(15)
__main__.MyClass 15
Orientação a Objetos com Python
 Herança
class Poligono:
def ehPoligono(self):
return True
class Triangulo(Poligono):
def __init__(self):
self.area = 100
self.lados = 3
def getArea(self):
return self.area
Módulos e Bibliotecas
Python
Módulos e Bibliotecas Python
 Biblioteca
 Arquivo que contém uma ou mais classes
 Acessadas através de import
Módulos e Bibliotecas Python
 Módulo
 Pasta que contém vários arquivos (bibliotecas)
 Acessadas através de import modulo.biblioteca
Módulos e Bibliotecas Python
 Alguns módulos importantes
 Os
 Time
 Math
 Appuifw (s60)
SDK Python for s60
SDK Python for s60
 Não disponível para Linux (ainda)
 Passos pra Instalação (no Windows)
 Baixe os 3 instaladores em:
http://[MEU_IP]/
 Execute o Instalador do ActivePerl
 Descompacte o S60-SDK e execute o setup.exe
 next → next → install
 Descompacte o PythonForS60-SDK
 Copie o conteúdo de epoc32/ para:
 C:Symbian9.2S60...Epoc32
 Seus códigos vão em:
C:Symbian9.2S60...Epoc32winscwcpython
Introdução a Python
for s60
Sintaxe de PyS60
PyS60
 appuifw (Application User Interface Framework)
 Interfaces Gráficas nativas da s60
 appuifw.note: Notificações 'pop-up'
 appuifw.query: Janela de input (1 campo)
 appuifw.multi_query: Janela de input (2 campos)
 appuifw.popup_menu: Menu Simples
 appuifw.selection_list: Lista com Busca
 appuifw.multi_selection_list: Lista capaz de selecionar vários
itens
PyS60 - appuifw
 appuifw.note
 Descrição: Simples Janela de Notificação
 Sintaxe: appuifw.note(texto, tipo)
 Tipos podem ser:
 Info
 Error
 Conf
PyS60 - appuifw
PyS60 - appuifw
 appuifw.query
 Entrada de Dados simples
 Sintaxe: appuifw.query(texto,tipo[,valor inicial])
 Tipos podem ser:
 Text
 Number
 Date
 Time
 Code
 Query
 Float
PyS60 - appuifw
 appuifw.multi_query
 Entrada de Dados Com 2 Campos
 Sintaxe: appuifw.multi_query(label1,label2)
PyS60 - appuifw
 appuifw.popup_menu
 Menu 'Pop-up'
 Sintaxe: appuifw.popup_menu(lista_com_escolhas[,label])
 Retorna o indice da lista_de_escolhas
PyS60 - appuifw
 appuifw.selection_list
 Seleção com busca (lista grande)
 Sintaxe: appuifw.selection_list(lista_com_escolhas[,busca])
 Busca pode ser 0 ou 1
 Retorna o indice da lista_com_escolhas
PyS60 - appuifw
 appuifw.multi_selection_list
 Seleção com busca e capacidade de seleção de mais de um
item
 Sintaxe: appuifw.multi_selection_list(lista[,style,busca])
 Busca pode ser 0 ou 1
PyS60 - messaging
 messaging
 Módulo de manipulação de mensagens SMS
 Sintaxe: messaging.sms_send('+Numero',u'Mensagem')
PyS60 - messaging
 inbox
 Acessando a Caixa de Entrada
Import inbux, appuifw
box = inbox.Inbox()
for sms_id in box.sms_messages()[:5]:
msg = box.content(sms_id)
appuifw.note(msg)
PyS60 - messaging
 Aplicação Funcional
Import appuifw, messaging
alunos = [u'flavio',u'lucas','u'danilo',u'joao',u'jose',u'maria']
ind_presentes = appuifw.multi_selection_list(alunos, 'checkbox',1)
presentes = “”
for indice in ind_presentes:
presentes+= alunos[indice] + “ | ”
presentes += u' Estavam presentes.'
appuifw.note(u'Enviando SMS')
messaging.sms_send('+558399814441', presentes)
appuifw.note(u'Enviada!')
PyS60 – Estrutura de uma Aplicação appuifw
 O Objeto appuifw.app
 Estrutura
PyS60
 Exemplo
import appuifw, e32
def quit():
appuifw.note(u”Saindo..”)
app_lock.signal()
appuifw.app.exit_key_handler = quit
appuifw.app.title = u'Primeira aplicação'
appuifw.note(u”Aplicacao rodando..”)
app_lock = e32.Ao_lock()
app_lock.wait()
PyS60
 Exemplo 2
import appuifw, e32
def foto():
appuifw.note(u'Tirando foto')
def claro():
appuifw.note(u'Mais claro')
def escuro():
appuifw.note(u'Mais Escuro')
def quit():
appuifw.note(u”Saindo..”)
app_lock.signal()
appuifw.app.exit_key_handler = quit
appuifw.app.title = u'Segunda aplicação'
appuifw.app.menu = [(u”Tirar Foto”, foto),
(u”Editar Foto”, ((u'Claro',claro),(u'Escuro',
escuro)))]
app_lock = e32.Ao_lock()
app_lock.wait()
PyS60 – Estrutura de uma Aplicação appuifw
 appuifw.app.body
 Pode ser:
 Canvas
 Form
 Listbox
 Text
 Área pode ser aumentada!
 appuifw.app.screen = 'full'
 appuifw.app.screen = 'large'
 appuifw.app.screen = 'normal'
PyS60 - Sound
 Text to Speech
Import appuifw. audio
texto = appuifw.query(u”Digite uma palavra:”, “text”)
audio.say(text)
PyS60 - Sound
 Mp3 Player
import audio
sound = audio.Sound.open("E:Soundsmysound.mp3")
def playMP3():
sound.play()
playMP3()
PyS60 - Teclado
 Keyboard
 É preciso associar um canvas ao app.body
 Área drawable
 Captura eventos do teclado
Canvas = appuifw.Canvas()
appuifw.app.body = canvas
PyS60 - Teclado
 Keyboard
 Mapa de Teclas
PyS60 - Teclado
 Exemplo de Uso
import appuifw, key_codes, e32
def keys(event):
if event['keycode'] == key_codes.EKeyUpArrow:
appuifw.note(u"Up arrow was pressed")
elif event['keycode'] == key_codes.EKey2:
appuifw.note(u"Key 2 was pressed")
def quit():
app_lock.signal()
canvas = appuifw.Canvas(event_callback = keys)
appuifw.app.body = canvas
appuifw.app.exit_key_handler = quit
app_lock = e32.Ao_lock()
app_lock.wait()
Prática!

Más contenido relacionado

La actualidad más candente

Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em PythonLuciano Ramalho
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5Diego Pacheco
 
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonMinicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonGuilherme Garcia
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVACristiano Almeida
 
09 programando em python - classes
 09   programando em python - classes 09   programando em python - classes
09 programando em python - classesVictor Marcelino
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Saulo Arruda
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Natanael Fonseca
 
Programação orientada a objetos – III
Programação orientada a objetos – IIIProgramação orientada a objetos – III
Programação orientada a objetos – IIIGabriel Faustino
 
Aula actionscript basico
Aula actionscript basicoAula actionscript basico
Aula actionscript basicoWemerson Silva
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonAlvaro Oliveira
 

La actualidad más candente (17)

Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
Java - Primeiros passos
Java - Primeiros passosJava - Primeiros passos
Java - Primeiros passos
 
Introducao Google GO
Introducao Google GOIntroducao Google GO
Introducao Google GO
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 
Java8
Java8Java8
Java8
 
Minicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e PythonMinicurso de Django - Desenvolvimento ágil web com Django e Python
Minicurso de Django - Desenvolvimento ágil web com Django e Python
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
09 programando em python - classes
 09   programando em python - classes 09   programando em python - classes
09 programando em python - classes
 
Java 13
Java 13Java 13
Java 13
 
Java 16
Java 16Java 16
Java 16
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
 
Java11
Java11Java11
Java11
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Programação orientada a objetos – III
Programação orientada a objetos – IIIProgramação orientada a objetos – III
Programação orientada a objetos – III
 
Aula actionscript basico
Aula actionscript basicoAula actionscript basico
Aula actionscript basico
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
 

Destacado

Aula-Teste - ETEC LG - Dispositivos móveis e mercado
Aula-Teste - ETEC LG - Dispositivos móveis e mercadoAula-Teste - ETEC LG - Dispositivos móveis e mercado
Aula-Teste - ETEC LG - Dispositivos móveis e mercado#Jão Pablo
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Flávio Ribeiro
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Implementação de Aplicações Móveis e Jogos com Python - Aula 5Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Implementação de Aplicações Móveis e Jogos com Python - Aula 5Flávio Ribeiro
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Flávio Ribeiro
 
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...Flávio Ribeiro
 
Aula teste ETEC - Analise de Programacao
Aula teste ETEC - Analise de ProgramacaoAula teste ETEC - Analise de Programacao
Aula teste ETEC - Analise de ProgramacaoAlcides Duarte
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Implementação de Aplicações Móveis e Jogos com Python - Aula 4Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Implementação de Aplicações Móveis e Jogos com Python - Aula 4Flávio Ribeiro
 
Building a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York TimesBuilding a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York TimesFlávio Ribeiro
 

Destacado (9)

Aula-Teste - ETEC LG - Dispositivos móveis e mercado
Aula-Teste - ETEC LG - Dispositivos móveis e mercadoAula-Teste - ETEC LG - Dispositivos móveis e mercado
Aula-Teste - ETEC LG - Dispositivos móveis e mercado
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Implementação de Aplicações Móveis e Jogos com Python - Aula 5Implementação de Aplicações Móveis e Jogos com Python - Aula 5
Implementação de Aplicações Móveis e Jogos com Python - Aula 5
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3Implementação de Aplicações Móveis e Jogos com Python - Aula 3
Implementação de Aplicações Móveis e Jogos com Python - Aula 3
 
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...
Towards the Application of WebRTC Peer-to-Peer to Scale Live Video Streaming ...
 
Aula teste ETEC - Analise de Programacao
Aula teste ETEC - Analise de ProgramacaoAula teste ETEC - Analise de Programacao
Aula teste ETEC - Analise de Programacao
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Implementação de Aplicações Móveis e Jogos com Python - Aula 4Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Implementação de Aplicações Móveis e Jogos com Python - Aula 4
 
Python, WebRTC and You
Python, WebRTC and YouPython, WebRTC and You
Python, WebRTC and You
 
Building a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York TimesBuilding a Video Encoding Pipeline at The New York Times
Building a Video Encoding Pipeline at The New York Times
 

Similar a Implementação de Aplicações Móveis e Jogos com Python - Aula 2

Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do GoogleLuciano Ramalho
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webAlvaro Oliveira
 
Minicurso-Python-01.pptx
Minicurso-Python-01.pptxMinicurso-Python-01.pptx
Minicurso-Python-01.pptxPapirusDig
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Motalucianacmota
 
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...JP Clementi
 
Desenvolvimento RAD com Python (Fenasoft)
Desenvolvimento RAD com Python (Fenasoft)Desenvolvimento RAD com Python (Fenasoft)
Desenvolvimento RAD com Python (Fenasoft)Osvaldo Santana Neto
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação PythonJunior Sobrenome
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsHelio Colombe
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Pythonguestac3de
 
Introducao ao Desenvolvimento iOS
Introducao ao Desenvolvimento iOSIntroducao ao Desenvolvimento iOS
Introducao ao Desenvolvimento iOSDiogo Costa
 
Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011Luciano Ramalho
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Developmentpugpe
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentRodrigo Alves Vieira
 
Introdução à programação para Android
Introdução à programação para AndroidIntrodução à programação para Android
Introdução à programação para AndroidJorge Cardoso
 
A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)Ricardo Valeriano
 

Similar a Implementação de Aplicações Móveis e Jogos com Python - Aula 2 (20)

Python, a arma secreta do Google
Python, a arma secreta do GooglePython, a arma secreta do Google
Python, a arma secreta do Google
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações web
 
Minicurso-Python-01.pptx
Minicurso-Python-01.pptxMinicurso-Python-01.pptx
Minicurso-Python-01.pptx
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
Python2.5.ppt
Python2.5.pptPython2.5.ppt
Python2.5.ppt
 
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
 
Desenvolvimento RAD com Python (Fenasoft)
Desenvolvimento RAD com Python (Fenasoft)Desenvolvimento RAD com Python (Fenasoft)
Desenvolvimento RAD com Python (Fenasoft)
 
Comecando tensorflow
Comecando tensorflowComecando tensorflow
Comecando tensorflow
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação Python
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - Português
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
Introducao ao Desenvolvimento iOS
Introducao ao Desenvolvimento iOSIntroducao ao Desenvolvimento iOS
Introducao ao Desenvolvimento iOS
 
Workshop Python.2
Workshop Python.2Workshop Python.2
Workshop Python.2
 
Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011
 
Workshop Django
Workshop DjangoWorkshop Django
Workshop Django
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Development
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Development
 
Introdução à programação para Android
Introdução à programação para AndroidIntrodução à programação para Android
Introdução à programação para Android
 
A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)A primeira app iOS (a gente não esquece)
A primeira app iOS (a gente não esquece)
 
Sua primeira app iOS
 Sua primeira app iOS Sua primeira app iOS
Sua primeira app iOS
 

Más de Flávio Ribeiro

Snickers: Open Source HTTP API for Media Encoding
Snickers: Open Source HTTP API for Media EncodingSnickers: Open Source HTTP API for Media Encoding
Snickers: Open Source HTTP API for Media EncodingFlávio Ribeiro
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Flávio Ribeiro
 
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-PeerBemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-PeerFlávio Ribeiro
 
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e LinuxDesenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e LinuxFlávio Ribeiro
 
stewie: Machine Learning para detecção não supervisionada de anomalias
stewie: Machine Learning para detecção não supervisionada de anomaliasstewie: Machine Learning para detecção não supervisionada de anomalias
stewie: Machine Learning para detecção não supervisionada de anomaliasFlávio Ribeiro
 
Test Driven Development - Trabalhe tranquilo e maximize sua produtividade
Test Driven Development - Trabalhe tranquilo e maximize sua produtividadeTest Driven Development - Trabalhe tranquilo e maximize sua produtividade
Test Driven Development - Trabalhe tranquilo e maximize sua produtividadeFlávio Ribeiro
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonFlávio Ribeiro
 
Introdução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonIntrodução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonFlávio Ribeiro
 
Linux em Sistemas Embarcados
Linux em Sistemas EmbarcadosLinux em Sistemas Embarcados
Linux em Sistemas EmbarcadosFlávio Ribeiro
 

Más de Flávio Ribeiro (9)

Snickers: Open Source HTTP API for Media Encoding
Snickers: Open Source HTTP API for Media EncodingSnickers: Open Source HTTP API for Media Encoding
Snickers: Open Source HTTP API for Media Encoding
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
 
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-PeerBemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
BemTV: Modelo Híbrido para Transmissão de Vídeos ao Vivo utilizando Peer-to-Peer
 
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e LinuxDesenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux
Desenvolvimento Mobile & Embedded com Arduino, Python, ARM e Linux
 
stewie: Machine Learning para detecção não supervisionada de anomalias
stewie: Machine Learning para detecção não supervisionada de anomaliasstewie: Machine Learning para detecção não supervisionada de anomalias
stewie: Machine Learning para detecção não supervisionada de anomalias
 
Test Driven Development - Trabalhe tranquilo e maximize sua produtividade
Test Driven Development - Trabalhe tranquilo e maximize sua produtividadeTest Driven Development - Trabalhe tranquilo e maximize sua produtividade
Test Driven Development - Trabalhe tranquilo e maximize sua produtividade
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
 
Introdução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonIntrodução a Linguagem de Programação Python
Introdução a Linguagem de Programação Python
 
Linux em Sistemas Embarcados
Linux em Sistemas EmbarcadosLinux em Sistemas Embarcados
Linux em Sistemas Embarcados
 

Implementação de Aplicações Móveis e Jogos com Python - Aula 2

  • 1. Implementação de Aplicações Móveis e Jogos com Python
  • 2. Review  1ª Aula  Apresentação de Python  Cenário de Python em Mobile & Embedded  Ciclo de Desenvolvimento de linguagens interpretadas  Sintaxe de Python  Interpretador Interativo  Variáveis e Tipos  Strings  Listas e Tuplas  Dicionários  Laços  Funções
  • 4. Orientação a Objetos com Python  A estrutura de uma Classe class NomeDaClasse(object): def metodoUm(self, argumento1): self.atributo1 = argumento1 def metodoDois(self): print self.atributo1  Gerando uma instância MeuObjeto = NomeDaClasse()
  • 5. Orientação a Objetos com Python  O método construtor class NomeDaClasse(object): def __init__(self, argumento1): print 'Fui inicializado!' self.atributo1 = argumento1 def metodoDois(self): print self.atributo1
  • 6. Orientação a Objetos com Python  Atributos Privados e Protegidos  Não existe implementação que assegure isso  Convenção  _nomeDoMetodo (1 underscore)  Não deve ser acessado externamente class NomeDaClasse(object): def __init__(self, argumento1): print 'Fui inicializado!' self.atributo1 = argumento1 def __metodoDois(self): print 'Esse método é privado! :)'
  • 7. Orientação a Objetos com Python  Alguns Exemplos  Personagem de Jogo  Evento
  • 8. Orientação a Objetos com Python  Atributos de Classe >>> class Pessoa(object): ... populacao = 0 ... def __init__(self): ... self.__class__.populacao+=1 ... >>> flavio = Pessoa() >>> Pessoa.populacao 1 >>> igor = Pessoa() >>> Pessoa.populacao 2
  • 9. Orientação a Objetos com Python  Métodos Estáticos class MyClass(object): def SomeMethod(x): print x SomeMethod = staticmethod(SomeMethod) >>> MyClass.SomeMethod(15) 15 >>> obj = MyClass() >>> obj.SomeMethod(15) 15
  • 10. Orientação a Objetos com Python  Métodos de Classe class MyClass(object): def SomeMethod(cls, x): print cls, x SomeMethod = classmethod(SomeMethod) >>> MyClass.SomeMethod(15) __main__.MyClass 15 >>> obj = MyClass() >>> obj.SomeMethod(15) __main__.MyClass 15
  • 11. Orientação a Objetos com Python  Herança class Poligono: def ehPoligono(self): return True class Triangulo(Poligono): def __init__(self): self.area = 100 self.lados = 3 def getArea(self): return self.area
  • 13. Módulos e Bibliotecas Python  Biblioteca  Arquivo que contém uma ou mais classes  Acessadas através de import
  • 14. Módulos e Bibliotecas Python  Módulo  Pasta que contém vários arquivos (bibliotecas)  Acessadas através de import modulo.biblioteca
  • 15. Módulos e Bibliotecas Python  Alguns módulos importantes  Os  Time  Math  Appuifw (s60)
  • 17. SDK Python for s60  Não disponível para Linux (ainda)  Passos pra Instalação (no Windows)  Baixe os 3 instaladores em: http://[MEU_IP]/  Execute o Instalador do ActivePerl  Descompacte o S60-SDK e execute o setup.exe  next → next → install  Descompacte o PythonForS60-SDK  Copie o conteúdo de epoc32/ para:  C:Symbian9.2S60...Epoc32  Seus códigos vão em: C:Symbian9.2S60...Epoc32winscwcpython
  • 20. PyS60  appuifw (Application User Interface Framework)  Interfaces Gráficas nativas da s60  appuifw.note: Notificações 'pop-up'  appuifw.query: Janela de input (1 campo)  appuifw.multi_query: Janela de input (2 campos)  appuifw.popup_menu: Menu Simples  appuifw.selection_list: Lista com Busca  appuifw.multi_selection_list: Lista capaz de selecionar vários itens
  • 21. PyS60 - appuifw  appuifw.note  Descrição: Simples Janela de Notificação  Sintaxe: appuifw.note(texto, tipo)  Tipos podem ser:  Info  Error  Conf PyS60 - appuifw
  • 22. PyS60 - appuifw  appuifw.query  Entrada de Dados simples  Sintaxe: appuifw.query(texto,tipo[,valor inicial])  Tipos podem ser:  Text  Number  Date  Time  Code  Query  Float
  • 23. PyS60 - appuifw  appuifw.multi_query  Entrada de Dados Com 2 Campos  Sintaxe: appuifw.multi_query(label1,label2)
  • 24. PyS60 - appuifw  appuifw.popup_menu  Menu 'Pop-up'  Sintaxe: appuifw.popup_menu(lista_com_escolhas[,label])  Retorna o indice da lista_de_escolhas
  • 25. PyS60 - appuifw  appuifw.selection_list  Seleção com busca (lista grande)  Sintaxe: appuifw.selection_list(lista_com_escolhas[,busca])  Busca pode ser 0 ou 1  Retorna o indice da lista_com_escolhas
  • 26. PyS60 - appuifw  appuifw.multi_selection_list  Seleção com busca e capacidade de seleção de mais de um item  Sintaxe: appuifw.multi_selection_list(lista[,style,busca])  Busca pode ser 0 ou 1
  • 27. PyS60 - messaging  messaging  Módulo de manipulação de mensagens SMS  Sintaxe: messaging.sms_send('+Numero',u'Mensagem')
  • 28. PyS60 - messaging  inbox  Acessando a Caixa de Entrada Import inbux, appuifw box = inbox.Inbox() for sms_id in box.sms_messages()[:5]: msg = box.content(sms_id) appuifw.note(msg)
  • 29. PyS60 - messaging  Aplicação Funcional Import appuifw, messaging alunos = [u'flavio',u'lucas','u'danilo',u'joao',u'jose',u'maria'] ind_presentes = appuifw.multi_selection_list(alunos, 'checkbox',1) presentes = “” for indice in ind_presentes: presentes+= alunos[indice] + “ | ” presentes += u' Estavam presentes.' appuifw.note(u'Enviando SMS') messaging.sms_send('+558399814441', presentes) appuifw.note(u'Enviada!')
  • 30. PyS60 – Estrutura de uma Aplicação appuifw  O Objeto appuifw.app  Estrutura
  • 31. PyS60  Exemplo import appuifw, e32 def quit(): appuifw.note(u”Saindo..”) app_lock.signal() appuifw.app.exit_key_handler = quit appuifw.app.title = u'Primeira aplicação' appuifw.note(u”Aplicacao rodando..”) app_lock = e32.Ao_lock() app_lock.wait()
  • 32. PyS60  Exemplo 2 import appuifw, e32 def foto(): appuifw.note(u'Tirando foto') def claro(): appuifw.note(u'Mais claro') def escuro(): appuifw.note(u'Mais Escuro') def quit(): appuifw.note(u”Saindo..”) app_lock.signal() appuifw.app.exit_key_handler = quit appuifw.app.title = u'Segunda aplicação' appuifw.app.menu = [(u”Tirar Foto”, foto), (u”Editar Foto”, ((u'Claro',claro),(u'Escuro', escuro)))] app_lock = e32.Ao_lock() app_lock.wait()
  • 33. PyS60 – Estrutura de uma Aplicação appuifw  appuifw.app.body  Pode ser:  Canvas  Form  Listbox  Text  Área pode ser aumentada!  appuifw.app.screen = 'full'  appuifw.app.screen = 'large'  appuifw.app.screen = 'normal'
  • 34. PyS60 - Sound  Text to Speech Import appuifw. audio texto = appuifw.query(u”Digite uma palavra:”, “text”) audio.say(text)
  • 35. PyS60 - Sound  Mp3 Player import audio sound = audio.Sound.open("E:Soundsmysound.mp3") def playMP3(): sound.play() playMP3()
  • 36. PyS60 - Teclado  Keyboard  É preciso associar um canvas ao app.body  Área drawable  Captura eventos do teclado Canvas = appuifw.Canvas() appuifw.app.body = canvas
  • 37. PyS60 - Teclado  Keyboard  Mapa de Teclas
  • 38. PyS60 - Teclado  Exemplo de Uso import appuifw, key_codes, e32 def keys(event): if event['keycode'] == key_codes.EKeyUpArrow: appuifw.note(u"Up arrow was pressed") elif event['keycode'] == key_codes.EKey2: appuifw.note(u"Key 2 was pressed") def quit(): app_lock.signal() canvas = appuifw.Canvas(event_callback = keys) appuifw.app.body = canvas appuifw.app.exit_key_handler = quit app_lock = e32.Ao_lock() app_lock.wait()