Spanish [SOLUCIONADO] Indicador de estado de bateria

cas6678

Active Member
Licensed User
Longtime User
Hola,

Estoy trabajando con una aplicacion que trabaja en pantalla complete y por lo tanto no me deja ver en pantalla normal el estado de la bateria del dispositivo.

Hay alguna manera de capturar ese estado para poder mostrarlo en la propia aplicacion??

Saludos.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Create mejor un servicio y pon esto:

B4X:
Sub Process_Globals
   Dim NivelBateria As Int

End Sub

Sub Service_Create
  Dim PhoneId As PhoneId   ' Es la libreria Phone
  Dim EstadoTelefono As PhoneEvents
  EstadoTelefono.InitializeWithPhoneState("PE",PhoneId)
   
End Sub




Sub PE_BatteryChanged (Level As Int, Scale As Int, Plugged As Boolean, Intent As Intent)
  ' Entra cuando se produce un evento de la bateria
  Log("Nivel batería " & Level ) 

  NivelBateria = Level  ' Ya puedes poner el porcentaje de bateria donde tu quieras con esta variable global
  ' Normalmente la escala es 100, pero si te quieres asegurar puedes hacer esto que seria mas correcto:
  NivelBateria = Level * 100 / Scale

  ' Si te interesa saber si está conectado o no (para que de un aviso y no te quedes sin bateria)  en Plugged te devuelve si lo está con un True, o False si no está
End Sub

Saludos
 

cas6678

Active Member
Licensed User
Longtime User
Muchas gracias por todas las respuestas, todas utiles. Finalmente me quede con la de Jesus y cree un servicio con lo que resuelvo dos temas en uno...el de la bateria y el mi primer servicio en una aplicacion.

Al hilo de lo anterior me surge una nueva duda. En mi servicio aparece...
B4X:
#StartAtBoot: false
Lo he cambiado por true entendiendo que el servicio deberia arrancar solo al cargar pero lo cierto es que no pasa, y si no pongo...
B4X:
Sub Activity_Create(FirstTime As Boolean)
StartService(EstadoBateria)

...no arranca. Hago algo mal?

Gracias.
 

Descartex

Well-Known Member
Licensed User
Longtime User

cas6678

Active Member
Licensed User
Longtime User
Lo lei pero no alcance a entenderlo quizas porque me sorprende lo que me parece que quiere decir...;)

Cuando dices que...
la propiedad #StartAtBoot no hace que arranque cuando lo pongas a cargar, sino que arranca al arrancar el móvil, como un programa de inicio de Windows.

...quiere decir que el servicio arrancara aunque la aplicacion no se haya ejecutado? no me cuadra porque luego al hacer correr la aplicacion tengo que hacer un StartService.

Creo que me estoy perdiendo algo
 

JordiCP

Expert
Licensed User
Longtime User
La aplicacion se tiene que ejecutar como minimo una vez después de la instalación.

Después, aunque el móvil arranque de nuevo, el servicio se ejecutará aunque no se ejecute la aplicacion
 

cas6678

Active Member
Licensed User
Longtime User
Entonces si pongo en el servicio #StartAtBoot=true no sera necesario que ponga StartService(servicioquesea) en la activity??
 

JordiCP

Expert
Licensed User
Longtime User
Sigue siendo necesario, porque el servicio se debe llamar al menos una vez. Al ejecutarse, es cuando queda registrado en el sistema que arranque también en el boot

No hay ningún problema en que, una vez el servicio se haya ejecutado (en el boot), cuando lanzas tu aplicación ésta haga un StartService(), ya que si el mismo ya está creado, se pasará la parte del Service_Create y entrará directamente en el Service_Start(.)
 
Top