Android GPS set location by calculation average -
i have class implements locationlistener, in method onlocationchanged current location once gps gets information.
my question save coordinates want (for example 5 coordinates) in list , calculate average once fifth coordinate , update result location.
my problem how set calculated coordinate location. have use mock location or there better way?
thank you.
edit: set location manager in oncreate:
//gps sensor locationmanager = (locationmanager) getsystemservice(location_service); criteria criteria = new criteria(); criteria.setaccuracy(criteria.accuracy_fine); criteria.setpowerrequirement(criteria.no_requirement); criteria.setcostallowed(false); bestprovider = locationmanager.getbestprovider(criteria, true); log.d(tag, "bestprovider: " + string.valueof(bestprovider)); locationmanager.requestlocationupdates(bestprovider, 2000, 2, locationlistener);
here's listner:
locationlistener locationlistener = new locationlistener(){ @override public void onlocationchanged(location location) { latitude = location.getlatitude(); latitudelist.add(latitude); longitude = location.getlongitude(); longitudelist.add(longitude); altitude = location.getaltitude(); altitudelist.add(altitude); log.d(tag, "latitude: " + string.valueof(latitude)); log.d(tag, "longitude: "+ string.valueof(longitude)); log.d(tag, " altitude " + string.valueof(altitude)); locationcounter++; toast.maketext(getapplicationcontext(), ""+locationcounter, toast.length_long).show(); if(locationcounter == counterreset){ for(int = 0; < latitudelist.size();i++){ latitudeaverage = latitudeaverage + latitudelist.get(i); longitudeaverage = longitudeaverage + longitudelist.get(i); altitudeaverage = altitudeaverage + altitudelist.get(i); } latitudeaverage = latitudeaverage / latitudelist.size(); longitudeaverage = longitudeaverage / longitudelist.size(); altitudeaverage = altitudeaverage / altitudelist.size(); locationupdate = new location(bestprovider); location.setlatitude(latitudeaverage); location.setlongitude(longitudeaverage); location.setaltitude(altitudeaverage); **here want set location update gps position** locationcounter = 0; latitudeaverage = 0; longitudeaverage = 0; altitudeaverage = 0; latitudelist.clear(); longitudelist.clear(); altitudelist.clear(); } } @override public void onproviderdisabled(string provider) { // todo auto-generated method stub } @override public void onproviderenabled(string provider) { // todo auto-generated method stub } @override public void onstatuschanged(string provider, int status, bundle extras) { // todo auto-generated method stub } };
Comments
Post a Comment