O uso dos recursos de câmera e compartilhamento de dados tem se tornado cada vez mais comum em aplicativos mobile dos mais diversos tipos. Por exemplo, em um aplicativo de força de vendas pode ser interessante para o vendedor compartilhar o contato de um cliente ou fornecedor. Tomando como base esse cenário, um botão para unir todas as informações do cliente e seu compartilhamento em uma rede social como o WhatsApp pode agilizar o processo de troca de informações entre os usuários. Baseado nessas necessidades, esse artigo apresenta como criar uma interface gráfica, tirar uma foto com a câmera do celular e publicá-la em alguma rede social, ou em outros meios de compartilhamento, utilizando o Delphi.
Saiba mais sobre: desenvolvimento mobile no Delphi
Passo 1: Criando a interface gráfica
Primeiramente, devemos criar um novo projeto multidispositivo no Delphi 10.1 Berlin (File > New > Multi-Device application – Delphi) e configurar a interface da janela principal conforme a Figura 1. Como pode ser observado, ela será composta por dois TButton, um TImage e um TActionList. Quando o usuário clicar no primeiro botão, será aberta a câmera do aparelho, e após a foto ser tirada, a mesma será copiada para o componente de imagem, que encontra-se abaixo do botão de compartilhamento. Caso o usuário clique no segundo botão, será exibida uma janela na qual poderá ser escolhida a rede social para a qual a foto deve ser enviada, como Facebook, WhatsApp, entre outras.
Dando um duplo clique no TActionList, será exibido o editor de ações, e nele devemos escolher a opção New Action > New Standard Action, que abrirá a janela mostrada na Figura 2. Dentro da categoria Media Library existem as ações TTakePhotoFromCameraAction e TShowShareSheetAction, utilizadas para acessar a câmera do celular e compartilhar objetos, respectivamente. A propriedade Action dos dois botões deve ser configurada para essas ações, isto é, o primeiro botão deve estar associado ao TTakePhotoFromCameraAction, e o segundo, à ação TShowShareSheetAction.
Passo 2: Programando os eventos
Para gerenciar o procedimento de captura e compartilhamento da imagem, precisamos tratar dois eventos das actions criadas: o DidFinishTaking, da ação da câmera, que é executado quando concluímos a captura da imagem; e o BeforeExecute, da ação de compartilhamento, que é disparado imediatamente antes de serem abertas as opções para envio da mídia. Na Listagem 1 temos a codificação que deve ser feita nesses eventos, a fim de exibir a imagem capturada e enviá-la para o compartilhamento.
procedure TForm2.TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap); begin Image1.Bitmap.Assign(Image); end; procedure TForm2.ShowShareSheetAction1BeforeExecute(Sender: TObject); begin ShowShareSheetAction1.Bitmap := Image1.Bitmap; end;
- Linha 01: Definição do procedimento relativo à foto. Ele é executado toda vez que o processo de tirar uma foto com a câmera do celular é concluído (o parâmetro Image contém a foto). Como o botão foi associado ao evento, quando ele for clicado será aberta a janela da câmera, e depois da foto tirada esse evento é executado;
- Linha 03: O componente TImage recebe do parâmetro Image a foto recém-tirada. Esse código irá mostrar a imagem na tela;
- Linha 05: Definição do procedimento relativo ao compartilhamento, que é executado quando o botão for clicado (é aberta uma janela para escolher para qual meio de compartilhamento a imagem deve ser enviada);
- Linha 07: A imagem em tela é associada à propriedade Bitmap da ação ShowShareSheetAction, fato que a envia para a mídia selecionada pelo usuário.
A Figura 3 apresenta o aplicativo rodando em um dispositivo Android. Note que na parte esquerda há um retângulo no qual o usuário pode selecionar a porção da imagem de seu interesse. Para obter esse efeito, a propriedade Editable, da ação TakePhotoFromCameraAction, deve ser configurada como True. Depois de selecionar parte da imagem e clicar em Ok, a foto é copiada para o aplicativo. Por fim, clicando no botão Compartilhar, é aberta uma janela similar à porção direita da Figura 3, sendo que as opções disponíveis dependem dos aplicativos que estão instalados no aparelho.
Com isso, concluímos esse exemplo, que mostrou, de forma sucinta e com poucas linhas de código, como obter uma imagem da câmera do celular e publicá-la em redes sociais e em outros meios de compartilhamento.
Curso relacionado: Desenvolvendo para Android com Delphi