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>
...

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’]
Pingback: Free: Curso Windows Phone – Vários tópicos | Blog do Eduardo H. Rizo
Pingback: [Desenvolvimento] Como observar a inatividade do usuário e habilitar ou desabilitar a tela de bloqueio do WP - Windows Phone Brasil
Como fazer o mesmo ser válido para Windows Phone 8.1 ?
Anderson, tudo bom?
Não tive problemas com isso no Windows 8.1. Que erro está sendo apresentado para você?
[]s
Eduardo H. Rizo