fbpx

Delphi XE5 Efetuando chamadas telefônicas direto de sua aplicação móvel

Selecionando o SimCard

Sua aplicação Mobile DelphiXE5 efetuando chamada telefônica sem necessidade de consultar a agenda ou outro aplicativo. De a seus usuários ótima experiência.

Imagine que você tem uma aplicação móvel que carrega a lista de fornecedores de seu cliente, nessa lista há informações como Nome, Telefone, e-mail, etc. Você pega a informação de telefone e gostaria de usá-la para efetuar uma ligação para esse fornecedor. Você memoriza esse telefone e no aplicativo de discagem do seu smartphone digita esse número para efetuar a chamada. Por que não fazer isso direto de seu aplicativo? O número do fornecedor já está armazenado lá… Vamos ao Delphi XE 5 então?!

 Criando a UI (User Interface – Interface do Usuário)

Abra o Delphi XE5 e crie Novo Projeto Móvel através do menu File–> New Project –> Delphi Projects –> Mobile Projects. Utilizaremos novamente o modelo de aplicação em branco (Blank Application).

Vamos salvar nosso projeto através do Menu File –> Save All (SHIFT +CTRL + S), crie uma pasta denominada prjDiscador para salvarmos nossos arquivos dentro dela. Chamaremos a Unit do formulário de frmDiscadorUnt e o projeto chamaremos Discador.

Insira no formulário um Listbox, renomeie-o para lbxFornecedores, clique com o botão direito sobre ele e selecione a opção Add Item.

Adicionando Itens ao ListBox

Vamos adiconar 1 TListBoxHeader e 3 TListboxItem. E configurar suas propriedades como abaixo:

  • ListBoxItem1
    • ItemData.Text –> ‘Banco do Brasil’
    • ItemData.Detail –> ‘0800 729 0722’
    • StyleLookup –> listboxitembottomdetail
  • ListBoxItem2
    • ItemData.Text –> ‘Caixa’
    • ItemData.Detail –> ‘0800 726 0101’
    • StyleLookup –> listboxitembottomdetail
  • ListBoxItem3
    • ItemData.Text –> ‘Loja da Esquina’
    • ItemData.Detail –> ”
    • StyleLookup –> listboxitembottomdetail

Altere a propriedade Align do lbxFornecedores para alClient, assim ele passará a ocupar toda a tela do aplicativo. Quando alteramos as propriedades StyleLookup dos ListBoxItens listboxitembottomdetail fizemos com que a informação do campo Detail passe a ser exibida abaixo do texto principal do item.

Agora que já temos os dados de nossos “fornecedores” vamos codificar nossa aplicação dando a ela a funcionalidade proposta na postagem.

Funcionamento e Codificação da aplicação

Basicamente a aplicação efetuará a discagem para o item selecionado no lbxFornecedores vamos fazer alguns ajustes no código. Pressione F12 para visualizarmos a Unit e nela vamos inserir na cláusula uses da seção Interface vamos adicionar os seguintes Namespaces:

  //Namespaces adicionados
  FMX.PhoneDialer, FMX.Platform;

 Vamos ainda acrescentar à definição de nosso Formulário (frmDiscador) uma variável Discador em sua seção private como segue:

  private
    { Private declarations }
    Discador : IFMXPhoneDialerService;

Assim já temos tudo pronto para inserir o código que efetuará a chamada telefônica propriamente dita, para isso codificaremos o evento OnItemClick do lbxFornecedores como abaixo:

procedure TfrmDiscador.ListBox1ItemClick(const Sender: TCustomListBox;
  const Item: TListBoxItem);
begin
  if not Item.ItemData.Detail.IsEmpty then
    begin
      TPlatformServices.Current.SupportsPlatformService(IFMXPhoneDialerService, IInterface(Discador));
      if Assigned(Discador) then
        begin
          Discador.Call(Item.ItemData.Detail);
        end;
    end
  else
    begin
      Discador.Call(InputBox('Fornecedor sem número.', 'Informe o número a ser discado', '' ));
    end;

end;

voilà

Execute a aplicação e verá que já temos a chamadas telefônicas acontecendo ao clicar sobre os itens da nossa lista de fornecedores.

Faz-se notar que nosso último fornecedor não tem informado seu número de telefone, quando o campo Detail do item estiver vazio, será exibida uma InputBox solicitando o número a ser discado.

InputBox Discar

A simplicidade de implementar essa funcionalidade em sua aplicação pode fazer a diferença no cotidiano de seu usuário/cliente, pense nisso.

Até a próxima e bons códigos!


Comente