Quando desenvolvermos aplicações para dispositivos móveis, sejam para Android, iOS, Windows Phone, BlackBerry ou qualquer outra plataforma, é comum (e natural) querer (e precisar) utilizar os recursos do aparelho, tais como câmera, acelerômetro, entre outros.
Por mais que não se implemente tais funcionalidades inicialmente, não demora muito até o cliente solicitar alguma alteração nesse sentido. E por se tratar de um smartphone (no fundo, um celular), não é de se estranhar se nos for solicitado que o usuário possa efetuar ligações a partir da aplicação, sem precisar minimiza-la e acessar a lista de contatos ou a menu de chamadas telefônicas.
Com base nisso, este artigo explicará como realizar ligações a partir de aplicações próprias para Windows Phone. Aqui será utilizada a linguagem C# e a versão escolhida será a 7.x, de forma que o a aplicação aqui desenvolvida possa ser executada tanto no Windows Phone 7, quanto no 8.
Leia também: Rumo ao Desenvolvimento Mobile - Iniciação com Windows Phone
Iniciando a aplicação
Inicialmente devemos acessar o menu FILE > New > Project... no Visual Studio (nesse caso, o 2012 com o SDK para Windows Phone devidamente instalado). Na categoria Windows Phone, selecionamos o template Windows Phone App e na caixa de diálogo que será exibida, devemos selecionar a opção Windows Phone OS 7.1, conforme explicado anteriormente.
Na página inicial, MainPage.xaml, vamos inserir alguns controles que darão forma à nossa aplicação. O Grid de nome ContentPanel deve ficar como o código constante na Listagem 1, que insere um ListBox e um Button que serão utilizados posteriormente.
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<StackPanel>
<ListBox x:Name="lbxClientes">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=Nome}" FontSize="30"/>
<TextBlock Text="{Binding Path=Telefone}" FontSize="20"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button x:Name="btnLigar" Content="Ligar"/>
</StackPanel>
</Grid>
Essa ListBox será utilizada para listar alguns objetos que criaremos a seguir, simulando uma lista de clientes de uma aplicação comercial qualquer. Clicando no botão Ligar, o usuário poderá efetuar uma chamada para o telefone do cliente selecionado na lista.
Criemos então uma nova classe chamada Cliente, clicando com a direita no projeto, no Solution Explorer, e em Add > Class. Essa classe possuirá apenas dois atributos: nome e telefone, conforme vemos na Listagem 2.
public class Cliente
{
private string _nome;
private string _telefone;
public string Nome
{
get { return _nome; }
set { _nome = value; }
}
public string Telefone
{
get { return _telefone; }
set { _telefone = value; }
}
}
Em seguida, no evento Loaded da MainPage, vamos instanciar alguns clientes e lista-los na ListBox. O código para realizar tal tarefa é apresentado na Listagem 3.
private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e)
{
List<Cliente> clientes = new List<Cliente>();
clientes.Add(new Cliente() {
Nome = "José",
Telefone = "32322323"
});
clientes.Add(new Cliente()
{
Nome = "Maria",
Telefone = "87123456"
});
clientes.Add(new Cliente()
{
Nome = "Carlos",
Telefone = "91987654"
});
lbxClientes.ItemsSource = clientes;
}
Executando a aplicação no emulador já podemos ver os clientes listados, conforme ilustra a Figura 1.
Agora precisamos implementar o evento Click do botão Ligar, dando duplo clique sobre o mesmo no design, o que deve nos levar ao código C# da página. O código desse evento deve ficar como mostrado na Listagem 4, a seguir.
private void btnLigar_Click(object sender, RoutedEventArgs e)
{
Cliente cliente = (Cliente)lbxClientes.SelectedItem;
PhoneCallTask ligacao = new PhoneCallTask()
{
DisplayName = cliente.Nome,
PhoneNumber = cliente.Telefone
};
ligacao.Show();
}
No código acima utilizamos a classe PhoneCallTask, responsável por realizar ligações a partir da nossa aplicação. Ao invocar o método Show, o usuário é questionado se deseja realmente efetuar uma ligação para o número selecionado. Essa confirmação é necessária pois ao efetuar uma ligação, o cliente será cobrado por isso, de acordo com os serviços da sua operadora de telefonia móvel.
Podemos agora executar a aplicação, selecionar um cliente na lista e pressionar o botão Ligar. A Figura 2 ilustra essa ação.
Aceitando a solicitação e pressionando o botão call (ligar), a ligação é iniciada normalmente, como se vê na Figura 3.
Conclusão
Esse tipo de funcionalidade é muito comum em aplicações para dispositivos móveis e, muitas vezes, pode até se apresentar como um diferencial, pois tende a facilitar a vida do usuário, que não precisará sair da aplicação para ligar para um número que está ali na sua tela.
Como vimos, a responsável pelo serviço é a classe PhoneCallTask do namespace Microsoft.Phone.Tasks. Essa classe recebe os valores para os atributos DisplayName e PhoneNumber, que representam, respectivamente, o nome e o número para o qual se deseja ligar.
Caso o número discado já esteja registrado na lista de contatos do usuário, o nome que será exibido durante a ligação (Figura 3) será o do contato salvo na agenda e não o nome informado na propriedade DisplayName do objeto PhoneCallTask.
Outro ponto importante é que o formato do número informado deve ser válido, caso contrário, a ligação não poderá ser efetuada.
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo