Curso Windows Phone – Como observar a inatividade do usuário e habilitar ou desabilitar a tela de bloqueio do WP

Olá pessoal, tudo bom?

O sistema operacional do Windows Phone prevê uma série de características implícitas para proporcionar economia de bateria durante o uso do aparelho. Uma dessas características observa a atividade de uso do aparelho por parte do usuário, ou seja, se o usuário está usando uma determinada APP (tocando na tela ou nos botões de controle) a tela de bloqueio do Windows Phone não é executada, porém caso ele tenha executado uma determinada APP mas não está tocando na tela, a tendência natural é o sistema operacional observar a inatividade e então colocar a APP em modo “idle” e chamar a tela de bloqueio do mesmo.

Ocorre que por vezes temos aplicações que não necessitam da intervenção do usuário para que ela faça o trabalho devido, como por exemplo, uma APP para leitura de notícias ou apresentação de algum tipo de gráfico que irá requerer apenas a observação do usuário e não sua interação. Se esse for o seu caso, veja abaixo como proceder para observar a inatividade do usuário e habilitar ou desabilitar a tela de bloqueio do WP.

Projeto de Exemplo

O projeto de exemplo conta com uma interface simples que apresenta se a tela de bloqueio está ou não habilitada de acordo com a função de ativação da observação da inatividade do usuário.

1º passo: Interface

...
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
  <TextBlock Text="BLOG DO EDUARDO H. RIZO" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
  <TextBlock Text="idle detection" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>

<!--ContentPanel - place additional content here-->
  <StackPanel x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <StackPanel Name="stpFundo" Background="Red" Height="60">
      <TextBlock Name="msg" FontSize="40" Text="Lock Screen Enable" HorizontalAlignment="Center" />
    </StackPanel>
    <Button Name="btnAcao" Content="Disable lock screen" Margin="0,80,0,0" Tap="btnAcao_Tap" />
  </StackPanel>
...
Tela de Exemplo do Projeto
Exemplo: A tela irá alternar entre a situação de bloqueio de desbloqueio conforme a ação do usuário.

2º passo: codificação em C#

No clique do botão para habilitar/desabilitar a observação da inatividade do usuário, temos:

...
private void btnAcao_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
  PhoneApplicationService phoneService = PhoneApplicationService.Current;
  if (phoneService.UserIdleDetectionMode == IdleDetectionMode.Enabled)
  {
    phoneService.UserIdleDetectionMode = IdleDetectionMode.Disabled;
    btnAcao.Content = "Enable lock screen";
    msg.Text = "Lock Screen Disabled";
    stpFundo.Background = new SolidColorBrush(Color.FromArgb(255, 0, 255, 0));
  }
  else
  {
    phoneService.UserIdleDetectionMode = IdleDetectionMode.Enabled;
    btnAcao.Content = "Disable lock screen";
    msg.Text = "Lock Screen Enabled";
    stpFundo.Background = new SolidColorBrush(Color.FromArgb(255, 255, 0, 0));
  }
}
...

Observamos pelo código acima que a classe PhoneApplicationService é que nos permite conhecer a característica de ociosidade do usuário e a propriedade UserIdleDetectionMode nos permite habilitar ou não a mesma. O restante do código é apenas para o tratamento visual dos controles existentes na tela.

Post Relacionado: 

Grande abraço,
Eduardo Henrique Rizo

[twitter-follow screen_name=’eduardorizo’ show_count=’yes’]

4 comentários em “Curso Windows Phone – Como observar a inatividade do usuário e habilitar ou desabilitar a tela de bloqueio do WP”

  1. Pingback: Free: Curso Windows Phone – Vários tópicos | Blog do Eduardo H. Rizo

  2. Pingback: [Desenvolvimento] Como observar a inatividade do usuário e habilitar ou desabilitar a tela de bloqueio do WP - Windows Phone Brasil

Deixe um comentário