Hola Angel
Desgraciadamente nos volvemos a encontrar con la "politica de seguridad de Google"
, que por lo visto va "capando" cosas cuando le parece. He probado tu programa, y si, depende de que dispositvo y de que versión de Android no va el bloqueo.
Para lo que dices que a veces te bloquea o no, yo haria una cosa, crearia una variable global en el starter, y la cambiaria dependiendo de la consulta :
' ----------------------- esto es como está ----------------------------
Sub Service_Start (StartingIntent As Intent)
If ComprobarBloqueoPantalla=True Then
Log("Bloqueada")
If IsPaused(Pantalla) Then StartActivity(Pantalla)
CallSub2(Pantalla,"DesbloquearPantallaBloqueo","")
Else
Log("Bloquear")
'If IsPaused(Pantalla) Then StartActivity(Pantalla)
CallSub2(Pantalla,"BloquearPantallaBloqueo","")
End If
StartServiceAt("", DateTime.Now + 10 * DateTime.TicksPerSecond, True) 'schedule the next task to run in 30 seconds.
End Sub
' ----------------------------- lo cambias por esto: --------------------------
Sub Process_Globals
dim Bloquear as Boolean
.................
.................
.................
.................
Sub Service_Start (StartingIntent As Intent)
If ComprobarBloqueoPantalla Then
Log("Bloqueada>desbloquear")
Bloquear = false
Else
Log("Desbloqueada>Bloquear")
Bloquear = True
End If
StartActivity(Pantalla)
StartServiceAt("", DateTime.Now + 10 * DateTime.TicksPerSecond, True) 'schedule the next task to run in 30 seconds.
End Sub
' en pantalla quitas el (s As String) de las llamadas y pones esto en el Resume:
Sub Activity_Resume
If Starter.Bloquear Then
BloquearPantallaBloqueo
Else
DesbloquearPantallaBloqueo
End If
End Sub
Si con eso no te funciona, tienes dos opciones, si el dispositivo es root hacer esto:
Dim OS As OperatingSystem ' libreria OSLibrary
OS.goToSleep(1000)
y en un segundo se apaga el movil (funciona con milisegundos)
tendrás que añadir al manifest esto:
AddPermission(
android.permission.DEVICE_POWER)
Y la otra es bajar el brillo a la pantalla:
Dim p As Phone ' libreria Phone
p.SetScreenBrightness(0)
Pero aunque esté a 0 (cero) no estará completamente apagada, y por otro lado a la que salgas de la aplicación se recupera el brillo, puedes poner un formulario en negro y cuando activen la aplicación restaurar el brillo.
Siento no poder darte una mejor solución, pero creo que no existe, siempre puedes preguntarle al Sr. Erel
Saludos