[Desenvolvimento] Como observar a inatividade do usuário e habilitar ou desabilitar a tela de bloqueio do WP

1

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
<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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
...
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 (@eduardorizo)

Fonte: Blog do Eduardo H. Rizo

Share.

About Author

Bacharel em Ciência da Computação pela FIPP/Unoeste, Pós-Graduado em Desenvolvimento de Sistemas Web, Segurança da Informação e Avaliação do Ensino e da Aprendizagem, Professor universitário e responsável pelo setor de desenvolvimento de sistemas web da Universidade do Oeste Paulista. MCP e MCPS pela Microsoft e nas horas vagas dedica um pouco do seu tempo escrevendo posts técnicos sobre desenvolvimento de sistemas web, windows phone, gerenciamento de servidores e outros assuntos para a comunidade.

  • Lucas Matt

    Brisando…