Italian Livello Batteria

t3radm

Member
Licensed User
Longtime User
Per controllare il livello della batteria ho utilizzato il "PhoneEvents"

il mio problema è che per leggere lo stato della batteria devo aspettare che venga chiamato l'evento "PhoneEventsName_BatteryChanged".
Questo però viene chiamato ad ogni cambio di stato (livello della batteria, inserimento o disinserimento del caricabatteria), e fino ad allora non capisco come poter ottenere tali informazioni..:confused:

Come al solito mi affido alla vostra esperienza per velocizzare il mio già lento sviluppo del software :sign0085:

Grazie come al solito e per eventuali e ulteriori chiarimenti a disposizione...


Saluti
 

t3radm

Member
Licensed User
Longtime User
Ciao,
ho trovato in giro questa porzione di codice, può tornarti utile ?

B4X:
 Dim inte As Intent
 inte.Initialize( "android.intent.action.POWER_USAGE_SUMMARY", "")
 StartActivity(inte)

Ciao Arenaluigi grazie della risposta :icon_clap:
Purtroppo però non mi serve, aggiungendo questo codice al suo raggiungimento ottengo l'apertura dello stato della batteria esattamente come se manualmente andassi in "impostazioni" -> "Batteria".

Al contrario sul mio programma, ho aggiunto in alto alla finestra una barra di notifica con piccolo menù, orario corrente e livello della batteria a 8 livelli con a finco un label che indica il livello della batteria in %. tutto funziona perfettamente, ed anche la grafica della batteria è venuta bene

Il problema che l'evento che mi restituisce il livello della batteria corrente, scaturisce ogni cambio di stato, quindi appena avvio il software il livello della batterie e la sua rappresentazione grafica rimangono in uno stato non definito fino allo scaturire dell'evento, se il telefono impiega 1/2 ora per passare per esempio dal livello di batteria da 61% a 60% per 1/2 ora non posso sapere il suo livello, poi al passaggio a 60% tutto funziona correttamente. io volevo sapere se potevo "forzare" l'evento per la lettura dei valori della batteria, oppure utilizzare qualche altra istruzione :confused:
 

giannimaione

Well-Known Member
Licensed User
Longtime User
un evento/oggetto TIMER ???
 

t3radm

Member
Licensed User
Longtime User
un evento/oggetto TIMER ???

:confused: il problema non è trovare un metodo per chiamare in un determinato momento una sub o utilizzare un oggetto, il problema che la libreria PhoneEvents
con la quali posso ottenere le informazioni necessarie, restituisce queste informazioni Apparentemente SOLO ad un cambio di stato della batteria, pertanto fino a quel momento non so come "pescare" queste info...:(
 

ivanomonti

Expert
Licensed User
Longtime User
:confused: il problema non è trovare un metodo per chiamare in un determinato momento una sub o utilizzare un oggetto, il problema che la libreria PhoneEvents
con la quali posso ottenere le informazioni necessarie, restituisce queste informazioni Apparentemente SOLO ad un cambio di stato della batteria, pertanto fino a quel momento non so come "pescare" queste info...:(

usa questa libreria e avrai molte soddisfazioni
 

Federico1968

Member
Licensed User
Longtime User
Ciao,
Ti posto il codice che ho usato io.
A me funziona...
Inizializza nell'activity create.

Sub Process_Globals
Dim PE As PhoneEvents
End Sub

Activity_Create(FirstTime As Boolean)
PE.Initialize("PE")
lbl1.Initialize("lbl1")
End sub

Sub PE_BatteryChanged (Level As Int, Scale As Int, Plugged As Boolean, Intent As Intent)
Log("BatteryChanged: Level = " & Level )
lbl1.Text= "Livello Batteria: "& Level & " %"
End Sub

All'avvio dell'applicazione carica subito il livello della batteria
Ciao
 

t3radm

Member
Licensed User
Longtime User
Ciao,
Ti posto il codice che ho usato io.
A me funziona...
Inizializza nell'activity create.

Sub Process_Globals
Dim PE As PhoneEvents
End Sub

Activity_Create(FirstTime As Boolean)
PE.Initialize("PE")
lbl1.Initialize("lbl1")
End sub

Sub PE_BatteryChanged (Level As Int, Scale As Int, Plugged As Boolean, Intent As Intent)
Log("BatteryChanged: Level = " & Level )
lbl1.Text= "Livello Batteria: "& Level & " %"
End Sub

All'avvio dell'applicazione carica subito il livello della batteria
Ciao

E' quasi esattamente il codice che ho utilizzato, ma sul mio S3 ottengo il valore Level o Plugged solo ad un cambio di stato e non all'avvio del programma

Grazie lo stesso
 

t3radm

Member
Licensed User
Longtime User
La provo appena posso, stasera ho un'emicranea visiva da paura ogni pixel acceso sullo schermo è un pugno negli occhi specialmente quello destro :BangHead:

Grazie per la dritta :sign0060:

Non ho resistito alla tentazione e con gli occhi lacrimanti di collirio ho fatto qualche prova...
Buona parte delle 60 opzioni della libreria le ho provate con successo, ma proprio quella sulla batteria non mi funziona !!!!:sign0013::sign0148:

In pratica nella documentazione si raccomanda prima di leggere la proprietà os.BatteryLevel di chiamare os.BatteryReceiver, ma proprio a questo punto mi sbuca un errore di Null

:confused::confused::confused::confused:
 

t3radm

Member
Licensed User
Longtime User
Ho provato anche la ver 1.3 della OSLibrary, purtroppo con lo stesso esito...
L'errore esatto che viene generato all'esecuzione del comando "os.BatteryReceiver" è:

"An error has occured in sub: main_initscreen_clicl(java line:1689) java.lang.NullPointerException Continue?"

:SHOCKED:

...
 
Top