No primeiro momento eu falei sobre python, nokia, symbian, a implemetação do python para o Series 60.
Após isto iniciei a parte dinâmica (slides 22 e 23) da palestra onde eu abria um console remoto (meu computador conectado no console python do celular) e fazia pequenos scripts para usar as funcionalidades do celular usando apenas python. O meu roteiro desta parte segue abaixo:
############################
# Abrir tres terminais
# Ligar o rfcomm
sdptool add --channel=2 SP
sudo rfcomm listen rfcomm2 2
####
# ir no celular e ativar o console bluetooth
#####
# Abrir o minicom em outro terminal
minicom
#######################
# no terceiro terminal
# procurar dispositivos
sudo hcitool scan
######################################
# DENTRO DO MINICOM
######################################
# PYTHON
# Coisas basicas
import os
# nome do os
os.name
# diretorio atual
os.getcwd()
os.listdir(u"e:\\")
# mostrar a hora atual
import time
time.ctime()
################################3
# SMS
# enviar um sms
import messaging
messaging.sms_send('08584166618', u'Somente um teste')
# receber um sms
import inbox
i = inbox.Inbox()
# receber sms
def my(msgid):
print msgid
i.bind(my)
########
# Aqui vai aparecer uma mensagem com o numero (copiar para abaixo)
# entao mostrar a mensagem
i.content(1049305)
i.address(1049305)
i.time(1049305)
# formatar para o tempo correto
from e32db import format_time
format_time(i.time(1049305))
#########
# Ligar para alguem
import telephone
telephone.dial('88752334')
telephone.hang_up()
#########################
# Agenda
import contacts
# mostrar contatos:
db = contacts.open()
for i in db:
print db[i].title
# adicionar um contato
c = db.add_contact()
c.add_field(u"first_name", value=u"CESOL")
c.add_field(u"last_name", value=u"UFC")
c.add_field(type=u"mobile_number", value=u"2008")
c.commit()
# Mostrar os contatos
for i in db:
print db[i].title
# Mostrar meu contato
c
c.id
db[c.id]
for e in c:
print e.type, e.value
# exportar um vcard
vcards = db.export_vcards([c.id])
# gravar o arquivo
filename = u"e:\\test.vcf"
f = open(filename, "w")
f.write(vcards)
f.close()
# PEDIR PARA LIGAR O BLUETOOTH
# enviar para alguem da plateia
# sudo hcitool scan
from e32socket import *
cel1 = "00:17:E3:F9:D6:D3"
#cel1 = '00:09:DD:50:0C:C5'
phone = bt_obex_discover(cel1)
bt_obex_send_file(phone[0], phone[1].values()[0], filename)
# apagar o contato
del db[c.id]
# Mostrar os contatos
for i in db:
print db[i].title
# reimportar o contato
db.import_vcards(vcards)
###########################
# Parte grafica (fazer um aplicativo)
# mexer no celular
# fazer um hello world
from appuifw import *
# desenhar o hello world
t = Text()
t.set(u"Hello python")
app.body = t
# como ninguem ta vendo, vamos tirar um screenshot da tela e enviar para alguem
import graphics
pc = '00:09:DD:50:0C:C5'
phone = bt_obex_discover(pc)
image = graphics.screenshot()
filename =(u'e:\\pic001.jpg')
image.save(filename)
bt_obex_send_file(phone[0], phone[1].values()[0], filename)
# enviar para eu mesmo
# ligar o bluetooth obex server
# fazer funcao para realizar screenshot e enviar para alguem
def ss(to='00:09:DD:50:0C:C5'):
phone = bt_obex_discover(to)
image = graphics.screenshot()
file =(u'e:\\pic001.jpg')
image.save(file)
bt_obex_send_file(phone[0], phone[1].values()[0], file)
#ss()
###
# Desenhar um retangulo
# mexer no celular
from random import randrange
app.body = canvas = Canvas()
color = randrange(0xffffff)
canvas.rectangle((0, 0, 100, 100), fill=color)
# enviar para eu mesmo
ss()
# desenhar uma seta de mouse
x,y = 20,20
arrow = [(0,0), (0,10), (2,8), (4,12), (6,11), (4,7), (7,7)]
canvas.polygon([(x+dx,y+dy) for dx,dy in arrow], 0, 0xffffff)
# enviar para mim mesmo
ss()
###################
# Camera
import camera
image = camera.take_photo()
# enviar para alguem
filename =(u'e:\\pic001.jpg')
image.save(filename)
cel1 = '00:17:E3:F9:D6:D3'
# cel1 = '00:09:DD:50:0C:C5'
phone = bt_obex_discover(cel1)
bt_obex_send_file(phone[0], phone[1].values()[0], filename)
# fazer um sistema de monitoramento?
# usar gprs/internet
#################
# Arquivo de audio?
import audio
filename = u"e:\\audio.wav"
s = audio.Sound.open(filename)
# gravar
s.record()
# parar
s.stop()
# tocar
s.play()
# fechar
s.close()
enviar para alguem
cel1 = '00:17:E3:F9:D6:D3'
# cel1 = '00:09:DD:50:0C:C5'
phone = bt_obex_discover(cel1)
bt_obex_send_file(phone[0], phone[1].values()[0], filename)
# apagar o arquivo
os.unlink(filename)
# Fazer um Servico jornalistico?
5 comentários:
Links para mais informações
WEB:
http://www.mobilenin.com/pys60/menu.htm
http://snippets.dzone.com/tags/series60
http://snippets.dzone.com/tag/pys60
http://wiki.opensource.nokia.com/projects/Python_for_S60
http://www.forum.nokia.com/info/sw.nokia.com
LIVRO:
Mobile Python - Jurgen Scheible and Ville Tuulos
Site do python para Series 60:
http://opensource.nokia.com/projects/pythonfors60/
Como acessar o console bluetooth:
http://wiki.opensource.nokia.com/projects/PyS60_Bluetooth_console
Como consigo emular o symbian em um Linux? O emulador só tem pra windows :\
Infelizmente o emulador só funciona em windows, algumas pessoas conseguiram fazer as versões antigas do emulador (antes do S60 3rd) rodar no wine, mas nunca fiz isto. Eu uso uma Máquina Virtual windows para rodar o emulador.
Postar um comentário