Android Question GPS, #of satellites ...

pierrem

Member
Licensed User
Longtime User
Hi,

when GPS initialized and started, GPSStatus give me (as expected) a list a satellites.

From the same place (my office ...) I get 18 to 22 satellites on this list.
Is this normal ?

I have to wait to have more than 15 of them to get the PositionChanged to rise, and (as far as i understand) to get a location.
It takes a lot of time, several minutes (because, I think, i'm not facing a window ...).

Is it a way to programmatically set only few sattelite to get a position (or to fire PositionChanger), even if this localisation is not very accurate.
It does'nt really matter for testing ...


Thanks in advance
 

Troberg

Well-Known Member
Licensed User
Longtime User
From a purely GPS technical viewpoint, you only need three satellites to get a position (two gets you a 2D position, one gives you the time).

Also, I know GPS works here, and this far north, I usually only get 4-6 satellites on a GPS device. On devices which also support GLONASS, I get more, of course.

So, surely, it should be possible.
 
Upvote 0

eurojam

Well-Known Member
Licensed User
Longtime User
Hey Pierrem,
I am using the GPS_GpsStatus event to count the satellites like this:

B4X:
Sub GPS_GpsStatus (Satellites As List)
  Dim s, I As Int
  s=0
  For I = 0 To Satellites.Size - 1
    Dim Satellite As GPSSatellite
    Satellite = Satellites.Get(I)
    If Satellite.UsedInFix=True Then s=s+1
  Next
 
  If s > 0 AND s < 6 Then
    bitmap_gps.Initialize(File.DirAssets, "10_device_access_location_searching.png")
  Else If s >=6 Then
    bitmap_gps.Initialize(File.DirAssets, "10_device_access_location_found.png")
  Else
    bitmap_gps.Initialize(File.DirAssets, "10_device_access_location_off.png")
  End If
  ImageView6.Bitmap = bitmap_gps
  Label9.Text = s
End Sub

Hope this helps
best regards
Stefan
 
Upvote 0

pierrem

Member
Licensed User
Longtime User
Thanks to eurojam & troberg for their answers.

... but it doesn't exactly solve my problem wich is I have to wait for almost 15 satetlites .usedinfix to be true to see the .positionChanged fired.
And, for me, it's really long to have such number, several minutes.

So, how to reduce this number to get the event positionChanged to be fired ?
If I can find a workaround to get the event fired with only 3 or 4 satellites, it will be great for testing

Maybe, a solution (for test) is to set the .useinfix to true for the/some/each satellites in the list.
How to acheive that ?

And, dig a window in my office (to get good satellites signal ...) is not an option
:)
 
Upvote 0

eurojam

Well-Known Member
Licensed User
Longtime User
Have you tried the OnMyLocationChangeListener from GMAPS. may be this event is earlier?

Stefan
 
Upvote 0

marcick

Well-Known Member
Licensed User
Longtime User
The .positionChanged event should be not related to the number of satellites, but to the filter applied in gps.start command

Start(MinimumTime As Long, MinimumDistance As Float)
MinimumTime - The shortest period (measured in milliseconds) between events. Pass 0 for highest frequency.
MinimumDistance - The shortest change in distance (measured in meters) for which to raise events. Pass 0 for highest frequency.

Did you start the gps with all filters to 0 ?
 
Upvote 0

pierrem

Member
Licensed User
Longtime User
Yep,
start(0,0)

and not yet tryed Have you tried the OnMyLocationChangeListener from GMAPS. may be this event is earlier?
 
Upvote 0

SCIS

Active Member
Licensed User
Longtime User
Pierrem, did you manage to solve your problem? I have the same problem at the moment.
 
Upvote 0

pierrem

Member
Licensed User
Longtime User
Scis ...

As far as I can remember (a while after ...),
the problem was partially solved by placing the mobile closer to a window to get a better satellite signal.

hope it helps
:)

Also,
the trouble was mostly with Sansung S4 ....
 
Upvote 0
Top