Implementação de Aplicações Móveis e Jogos com Python - Aula 4
Este documento fornece uma revisão sobre aplicações móveis e jogos com Python para S60. Ele discute tópicos como formulários, guias, bluetooth, rede e câmera. Também fornece dicas sobre organização de projetos Python para S60.
Review
3ª Aula
Mais appuifw
Title, body, menus
Teclado
Graphics e Canvas
Data Handling
Um pouco de jogos :-)
3.
Pra Hoje...
4ªAula
Fim do Appuifw
Forms e tabs
Exercícios
Bluetooth
Networking
Camera
O módulo sysinfo
Dicas de um Projeto
Definição dos grupos e Projetos
Appuifw.Form
appuifw.Form
Objetode formulários da s60
Recebe no construtor uma lista de tuplas e
seu tipo de edição.
(nome,tipo[,valor default])
Nome é um unicode
Tipo pode ser:
'text'
'number'
'date'
'time'
'combo'
'float'
6.
Appuifw.Form
appuifw.Form
Objetode formulários da s60
Tem os seguintes atributos
Flags
FFormEditModeOnly – Aceita edição
FFormViewModeOnly – Não aceita edição
Menu
Recebe uma lista de tuplas (titulo, callback)
Callback é uma referencia a função
Titulo é um unicode
7.
Appuifw.Form
appuifw.Form
Objetode formulários da s60
Tem os seguintes Métodos
Execute()
Apresenta a Form na UI
insert()
Insere itens ao Form
Pop() e length()
save_hook()
PyS60 – Exercício1
Exerc cio!í
Crie uma Agenda de Contatos. O usuário será capaz de
escolher entre adicionar pessoas a agenda (onde o programa
pede Nome e Telefone da pessoa) ou buscar pelo nome
usando uma multi_selection list.
Ao selecionar o nome da pessoa, o programa deverá imprimir
em um appuifw.Text() o Nome da pessoa e o Telefone dela. Ao
selecionar o menu novamente o appuifw.Text() deverá ser
apagado.
É desejável que o programa utilize Orientação a Objetos.
11.
PyS60 – Exercício2
Exerc cio!í
Criar uma aplicação que capture eventos do teclado e chame
funções da appuifw (query e note, por exemplo.)
É desejável que o programa utilize Orientação a Objetos, com
bibliotecas de captura de eventos e de gerência dos callbacks.
12.
PyS60 – Exercício3
Exerc cio!í
Criar uma aplicação que, a cada evento gerado do joystick,
mude a cor do body.
Criar também um menu (popup_menu) com a escolha de
escrever um nome (query). Esse nome escrito irá aparecer no
meio da tela com a cor preta (usando canvas.text ao invés de
appuifw.text).
Bluetooth
OBEX (OBjectEXchange)
Protocolo Bluetooth voltado pra transmissão de arquivos (audio,
imagem, etc)
15.
Bluetooth
OBEX (OBjectEXchange)
Protocolo Bluetooth voltado pra transmissão de arquivos (audio,
imagem, etc)
Para scan de dispositivos OBEX:
import socket
endereco, servicos = socket.bt_obex_discover()
print endereco,servicos
RFCOMM (RadioFrequency COMMunication)
Protocolo Bluetooth para transmissão (RX e TX) de texto ou
raw data
Bluetooth
18.
RFCOMM (RadioFrequency COMMunication)
Protocolo Bluetooth para transmissão (RX e TX) de texto ou
raw data
Para scan de dispositivos RFCOMM:
Bluetooth
import socket
endereco, servicos = socket.bt_discover()
print endereco,servicos
Módulo responsávelpor informações do sistema
sysinfo.battery()
Retorna o nivel da bateria (entre 0 e 7)
sysinfo.imei()
Retorna o número de identificação do celular
sysinfo.active_profile()
Retorna o perfil utilizado no momento (Silencioso, Reunião,
etc)
sysinfo.display_pixels()
Retorna o tamanho da tela em pixels (muito importante)
Sysinfo
35.
Módulo responsávelpor informações do sistema
sysinfo.free_drivespace()
Retorna o espaço livre em bytes em cada drive
{u'C:': 58463232, u'D:': 9494528, u'Z:': 0}
sysinfo.total_ram()
Retorna o tamanho da memória RAM
sysinfo.free_ram()
Retorna a memória RAM livre
sysinfo.signal_bars()
Retorna o sinal da antena (de 0 a 7)
sysinfo.sw_version()
Versão do firmware
Sysinfo
Várias funçõesem um só arquivo
Arquivo: operacoes.py
Funções:
soma(x,y)
subtrai(x,y)
divide(x,y)
Namespace e Dicas de um projeto Python
import operacoes
operacoes.soma(10,20)
operacoes.divide(100,2)
38.
Várias Classesem um só arquivo
Arquivo: funcionarios.py
Classes:
Presidente
Diretor
Estagiario
Namespace e Dicas de um projeto Python
import funcionarios
flavio = funcionarios.Estagiario()
lucas = funcionarios.Presidente()
flavio.trabalha()
lucas.toma_cafe()
Métodos
trabalha()
toma_cafe()
39.
Várias Classesem um só arquivo (Exemplo II)
Arquivo: funcionarios.py
Classes:
Presidente
Diretor
Estagiario
Namespace e Dicas de um projeto Python
from funcionarios import *
flavio = Estagiario()
lucas = Presidente()
flavio.trabalha()
lucas.toma_cafe()
Métodos
trabalha()
toma_cafe()
40.
Pacotes
Pasta:conexoes/
Arquivo __init__.py (vazio)
Arquivos:
bluetooth.py → Classes Server e Client
wireless.py → Classes AccessPoint e Client
Namespace e Dicas de um projeto Python
import conexoes.bluetooth
import conexoes.wireless
bt = conexoes.bluetooth.Client()
wifi = conexoes.wireless.AccessPoint()
41.
Pacotes (ExemploII)
Pasta: conexoes/
Arquivo __init__.py (vazio)
Arquivos:
bluetooth.py → Classes Server e Client
wireless.py → Classes AccessPoint e Client
Namespace e Dicas de um projeto Python
from conexoes import bluetooth
bt = bluetooth.Client()
42.
Pacotes (ExemploIII)
Pasta: conexoes/
Arquivo __init__.py (vazio)
Arquivos:
bluetooth.py → Classes Server e Client
wireless.py → Classes AccessPoint e Client
Namespace e Dicas de um projeto Python
from conexoes.bluetooth import Server
bt = Server()
43.
Dicas:
Crieuma pasta pra seu programa:
Deixe uma pasta do seu programa para os códigos (src)
Deixe outra pasta para Arquivos no geral (files)
Crie outras necessárias
Namespace e Dicas de um projeto Python
import os, os.path
PATH = u”C:DataMinhaAplicação”
if not os.path.exists(PATH): os.makedirs(PATH)
import os, os.path
Sources = u”C:DataMinhaAplicaçãosrc”
if not os.path.exists(Sources): os.makedirs(Sources)
44.
Dicas:
Coloquea pasta de códigos no seu Python Path
Assim ele será visível e poderá ser incluído nos seus códigos.
Namespace e Dicas de um projeto Python
import sys
Sources = u”C:DataMinhaAplicaçãosrc”
sys.path.append(Sources)