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.

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.

interface gráfica
Figura 1. Interface gráfica da janela principal

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.

ações do TActionList
Figura 2. Ações do TActionList

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.

Listagem 1. Eventos para tirar foto e compartilhar

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.

aplicação rodando
Figura 3. Aplicação rodando no Android

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.