segunda-feira, 8 de dezembro de 2008 - 16:16
Luiz Cruz

Sorria! Python no Symbian – Parte 3

Quatro códigos-fonte para você aprender a tirar fotos e enviá-las por MMS.

Nesta última parte do nosso tutorial, desenvolvido por Osvaldo Santana, colocaremos a mão na massa para criar um programa que tira foto e a envia por MMS para o número desejado.

Desenvolvendo

A filosofia do Python diz que a linguagem tem “batteries included” (baterías incluídas). Isso significa que a linguagem sempre deve vir acompanhada de uma biblioteca padrão bastante completa e poderosa.

Para ilustrar o desenvolvimento em Python para S60, vamos utilizar um exemplo bastante simples: uma aplicação que tira uma foto e a envia por MMS para um número de telefone informado.

Partiremos do esqueleto de aplicação: modelo.py, que pode ser referência para suas aplicações. Esta aplicação não fará nada de interessante ainda.

O modelo está organizado dentro de uma estrutura de classe e funções. Implementa o método “.executa()”, no qual programamos a opção “Sair” da aplicação, usando um “ActiveObject Lock” do Symbian. Usamos esse tipo de “trava” porque os programas são desenhados para trabalhar num modo assíncrono — ou seja, as funções retornam imediatamente após serem chamadas, mesmo antes de terem concluído as suas tarefas. Como foi dito na parte 2, usamos também o recurso de callback. Em nosso caso, o método “.sai()” é executado sempre que um evento exit_key for disparado, e esse evento ocorre quando acionamos o botão de opções direito do celular.

Ligando a câmera

O módulo “camera” é um dos mais interessantes que acompanham o PyS60. Com ele é possível acionar facilmente a câmera do celular, tirar fotografias, manipular a foto, gravá-la no cartão de memória, enviá-la para outros celulares etc.

Para tirar uma foto com a câmera, basta executar os comandos:

import camera
foto = camera.take_photo()
foto.save(“E:\\Images\\minha_foto.jpg”)

A função “.take_photo()” do módulo “camera” irá retornar um objeto do tipo “Image” contendo a imagem fotografada. Para gravar a imagem no cartão de memória, basta chamar o método “.save()” desse objeto. Note que o caractere “\” precisa ser duplicado (escaping).

Viewfinder e o objeto Canvas

É extremamente simples tirar foto, mas ainda não podemos ver o que está sendo fotografado. Para ver o que a câmera irá fotografar é necessário acionar o view finder da câmera (e desligá-lo imediatamente antes de tirar a fotografia).  Para obter este retorno visual, criamos um objeto do tipo Canvas, uma espécie de quadro para fixar a imagem. Criamos o método desenha tela e, dentro do método executa, definimos que o objeto Canvas é o corpo do programa. Chamamos o método desenha tela dentro dele.

Veja nosso primeiro programa: PyFoto1.py.

Incluindo opção tirar foto

Para evitar a execução repentina, incluiremos uma opção no menu tradicional para tirar a foto, com a instrução a seguir:

appuifw.app.menu = [(u"Tirar foto", self.tira_foto),]

Perceba que a atribuição está entre colchetes. Trata-se de uma lista. Você pode incluir mais opções para chamar outros métodos de seu interesse. Aproveitamos para criar o método tira_foto, para organizar o código.  Veja o resultado no arquivo: PyFoto2.py.

Enviando a foto com mms

Agora que temos a foto, vamos enviá-la por MMS para um número de celular informado. Para isso incluímos o código abaixo em nosso exemplo:

import messaging

numero_fone = appuifw.query(u”Número do telefone”, “text”)

if numero_fone:
messaging.mms_send(
numero_fone,
u”Foto tirada pelo PyFoto”,
“E:\\Images\\foto.jpg”
)

Veja o exemplo final: PyFoto3.py.  Repare: incluímos esta parte na função tira_foto para que a foto seja tirada antes do envio.

OBS: Cuidado ao testar o envio de MMS, pois isso poderá incorrer em custos.

Fica para você, como desafio, implementar as seguintes melhorias:

  • Reduzir o tamanho da imagem antes de enviá-la, para economizar na conta telefônica;
  • Buscar o número de telefone na lista de contatos;
  • Girar a tela para aproveitar melhor o espaço para o view finder;
  • Adicionar outras opções de envio (Flickr, Bluetooth)

Participe de nosso Fórum de Python!.

Categorias

Tags

Comentários

///
  • Muito obrigado pela iniciativa, estou no aguardo de mais partes!

    Parabéns!

    ah, vou acompanhar tudo e ficaria mesmo muito feliz se você disponibilizasse as matérias em um pdf.

    Abraço

    Erlon Olinda Cabral • 9/12/2008 - 0:00

Comente

///
Nome: ( Sair )
Email:

Fãs

///

Notícias

///
INFO Online - Copyright © 2012, Editora Abril S.A. - Todos os direitos reservados. All rights reserved.