Hi,

There is a section with the title "Maintaining a current best estimate" in the following link, it contains an implementation of a method called " isBetterLocation".
http://developer.android.com/guide/topics/location/obtaining-user-location.html

Hope this helps
/Yaron

--
Yaron Reinharts
Smart Drive Applications
http://www.poncho.co.il/gateaway.php
https://market.android.com/details?id=com.poncho.gsm.gate.activities





On 03/13/2012 05:32 AM, Jinja wrote:
Hello, I've never dealt with GPS data before, but having a quick look at your code it looks like you have a mismatch in converting your data to and from integers and doubles.

I notice you multiply by 1E6 when extracting the lat/long, presumably this is to maintain some accuracy during the double to int conversion...

int lat = (int) (currentPosition.getLatitude()*1E6);

So one fix is to use all doubles and remove all of your *1E6. The other fix is to use /1E6 instead of *1E6 when converting back to doubles...

currentPosition.setLatitude(smoothingCoor [0] / 1E6);

instead of...

smoothLat = (int) (smoothingCoor [0] * 1E6);
currentPosition.setLatitude(smoothLat);

I hope that fixes your issue.



On Sunday, March 11, 2012 12:46:24 AM UTC-8, concave wrote:

    Hi guys, i've a little problem here.
    I'm working with gps data, getting values every second and displaying
    current position on a map.
    The problem is that sometimes (specially when im using the app on
    indoor and not make a move) the values vary a lot, making the current
    position to change.
    I was wondering about some easy enough method to avoid this.
     As a first idea, I thought about discarding values with accuracy
    beyond certain threshold, and use Exponential filtering as i use
    on my
    Bearing. But i get up on Antartica. Here's the code that i used to
    get
    the location and filtering it with exponential :

    public void onLocationChanged(Location newLocation) {
                                   // Get previous Location, needed to
    get
    the Bearing Value
      if(currentPosition != null)
              {
                      prevLocation = currentPosition;
                      pLat = (int) (prevLocation.getLatitude() *1E6);
                      pLongi = (int) (prevLocation.getLongitude()*1E6);

              }
      currentPosition = new Location (newLocation);
      int lat = (int) (currentPosition.getLatitude()*1E6);
      int longi = (int) (currentPosition.getLongitude()*1E6);

      //Smoothing Latitude,Longitude
      if(lat != 0 && longi != 0){
              coor[0] = lat;
              coor[1] = longi;
              if (smoothingCoor == null){
    smoothingCoor = coor;
              }
                      for (i=0; i<coor.length;i++){
    smoothingCoor[i] = smoothingCoor [i] +alpha * (coor[i] -
    smoothingCoor[i]);
                      }
                      smoothLat = (int) (smoothingCoor [0] * 1E6);
                      smoothLongi = (int) (smoothingCoor [1] * 1E6);

              currentPosition.setLatitude(smoothLat);
              currentPosition.setLongitude(smoothLongi);
      }

      // Get Bearing Value
      if(prevLocation != null && currentPosition != null){

      bearing = prevLocation.bearingTo(currentPosition);

      //Smoothing bearing value with exponential
              if (smoothingBearing == 0) {
    smoothingBearing = bearing;
              } else {
    smoothingBearing = smoothingBearing +alpha * (bearing -
    smoothingBearing);
                                        }

      }

    Hope you can understand my explanataion, and i provide enough
    information
    Thanks

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to