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