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:
Participe de nosso Fórum de Python!.
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
Para comentar você precisa estar logado. Clique aqui para entrar.
Os comentários da INFO são moderados. Ofensas, spam, publicidade não são permitidos neste espaço. Para mais detalhes, leia nosso termo de uso.