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