Italian Problemi con Starter.GPS1.GPSEnabled (6.80, 6.50?)

Giorgio75

Member
Licensed User
Buongiorno,
sto usando la versione 6.80 con un programma scritto con la versione 6.50 e, con questa, funzionante.
Il programma una il GPS per ottenere Altitudine, LAT e LON secondo il seguente codice:

Sub Activity_Resume
If Starter.GPS1.GPSEnabled = False Then ' linea 829
ToastMessageShow("Please enable the GPS device.", True)
StartActivity(Starter.GPS1.LocationSettingsIntent) 'Will open the relevant settings screen.
Else
Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION)
End If
End Sub

Sub Activity_PermissionResult (Permission As String, Result As Boolean)
If Permission = Starter.rp.PERMISSION_ACCESS_FINE_LOCATION Then
If Result Then CallSub(Starter, "StartGPS")
End If
End Sub

Public Sub LocationChanged(Location1 As Location)
alt=Location1.Altitude
LAT=Location1.Latitude
LON=Location1.Longitude

edtLAT.Text="Lat: " & NumberFormat(LAT,0,6) & " °"
edtLON.Text="Lon: " & NumberFormat(LON,0,6) & " °"
End Sub

Sub Activity_Pause (UserClosed As Boolean)
CallSub(Starter,"StopGPS")
End Sub

Nella sezione Starter, invece:

Public Sub StartGps
If gpsStarted=False Then
GPS1.Start(0,0)
gpsStarted=True
End If
End Sub

Public Sub StopGps
If gpsStarted=True Then
GPS1.Stop
gpsStarted=False
End If
End Sub

Sub GPS_LocationChanged (Location1 As Location)
If qlL="Main" Then
CallSub2(Main, "LocationChanged", Location1)
Else
CallSub2(Neve, "LocationChanged", Location1)
End If
End Sub

Con la versione 6.50 il codice funziona, con la 6.80 mi dà invece il seguente errore alla linea 829 all'avvio del programma:

** Service (starter) Create **
** Service (starter) Start **
** Activity (main) Create, isFirst = true **
** Activity (main) Resume **
Error occurred on line: 829 (Main)
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.location.LocationManager.isProviderEnabled(java.lang.String)' on a null object reference
at anywheresoftware.b4a.gps.GPS.getGPSEnabled(GPS.java:149)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:710)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:339)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:249)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:134)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:163)
at b4a.VentoNTC.main.afterFirstLayout(main.java:108)
at b4a.VentoNTC.main.access$000(main.java:17)
at b4a.VentoNTC.main$WaitForLayout.run(main.java:80)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5264)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:695)

Qualche idea?

Grazie in anticipo.

Giorgio.
 

MarcoRome

Expert
Licensed User
Longtime User
Ciao Giorgio.
Per favore quando riporti codice ed errore utilizza:

upload_2017-3-5_17-19-46.png


Detto questo.
Strano perchè io utilizzo la stessa funzione su un progetto ricompilato con la 6.80 e non ho alcun problema.
Inoltre se provi a scaricare l'esempio di @Erel QUI che utilizza le tue stesse istruzioni:

B4X:
Sub Activity_Resume
    If Starter.GPS1.GPSEnabled = False Then
        ToastMessageShow("Please enable the GPS device.", True)
        StartActivity(Starter.GPS1.LocationSettingsIntent) 'Will open the relevant settings screen.
    Else
        Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION)
    End If
End Sub

Viene compilato ed eseguito senza alcun problema.
Se vuoi allegare il sorgente posso dare un'occhiata.
 

Giorgio75

Member
Licensed User
Ciao Marco,
grazie e scusa... sono nuovo nel Forum e anche nell'uso di B4A quindi ho tutto da imparare!
Infatti avevo impostato il codice proprio partendo dall'esempio di @ErelQUI, ma con v6.80 mi ritrovo questo errore che prima non avevo. Ho pensato alla versione dal momento che ho avuto anche un problema con la Dialog Library che, con il passaggio a v6.80, ho dovuto aggiornare. Sinceramente le informazioni sul tipo di errore (questo l'ho riscontrato in generale iniziando ad usare B4A) non sono molto chiare, o più probabilmente, sono io particolarmente inesperto che non riesco ancora ad interpretarle correttamente per fare ipotesi valide. Sembrerebbe qualche problema legato ad una non corretta dichiarazione dell'oggetto GPS. Mi rendo conto che non sia semplice per te aiutarmi, ma se riesci ad indirizzarmi posso provare a fornirti ulteriori elementi ed insieme svelare l'arcano.

Grazie per la disponibilità.

Giorgio.
 

Giorgio75

Member
Licensed User
Allego sorgente, sperando di non far rabbrividire nessuno: si tratta del mio primo programma e sto cercando di imparare.

Grazie.

Giorgio.
 

Attachments

  • VentoNTC.zip
    464.8 KB · Views: 245

MarcoRome

Expert
Licensed User
Longtime User
Non ci sono molti elementi , senza codice non è semplice capire dove hai il problema.
Gli errori che vedi sono i classici errori di Java non è che possano spiegarteli meglio , potrebbero dipendere da diversi fattori.
Prova ad "isolare" il codice ( nel senso commenta alcune parti ) e ricompila, cosi facendo capirai da dove viene.
Per darti una mano l'unica cosa e vedere il codice, le variabili che hai dichiarato, nel servizio starter cosa hai... etc.
 

MarcoRome

Expert
Licensed User
Longtime User
Ti sei dimenticato di inizializzare il servizio GPS:

B4X:
Sub Service_Create
    GPS1.Initialize("GPS")
End Sub
 

MarcoRome

Expert
Licensed User
Longtime User
Quindi la versione 6.80 non c'entra nulla. Non sarebbe partito con nessuna Release :D:D:D
 

Giorgio75

Member
Licensed User
Hai ragione!!!!! Probabilmente, siccome ho ripreso in mano il programma solo oggi dopo un po' di "inattività" nell'ultima versione avrò cancellato l'inizializzazione del servizio GPS (chissà poi perchè?) e salvato, senza più ricordarmelo! Con la 6.50 ti posso assicurare che funzionava, ma effettivamente il problema non era quello!
Abbi pazienza e grazie. Ora devo capire come funzionano di DB... temo che ci risentiremo.

Grazie ancora,
Giorgio.
 

Similar Threads

Top