android - Network location returned is wrong -


i want location of user using network. code

package com.example.locationtest;  import android.app.activity; import android.content.context; import android.location.criteria; import android.location.location; import android.location.locationlistener; import android.location.locationmanager; import android.os.bundle; import android.text.format.dateformat; import android.util.log;  public class whereami extends activity {     @override     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          locationmanager locationmanager;         string context = context.location_service;         locationmanager = (locationmanager) getsystemservice(context);          criteria crta = new criteria();         crta.setaccuracy(criteria.accuracy_fine);         crta.setaltituderequired(false);         crta.setbearingrequired(false);         crta.setcostallowed(true);         crta.setpowerrequirement(criteria.power_low);         string provider = locationmanager.getbestprovider(crta, true);          // string provider = locationmanager.gps_provider;         location location = locationmanager.getlastknownlocation(provider);         updatewithnewlocation(location);          locationmanager.requestlocationupdates(provider, 1000, 0,                 locationlistener);     }      private final locationlistener locationlistener = new locationlistener() {          @override         public void onlocationchanged(location location) {             updatewithnewlocation(location);         }          @override         public void onproviderdisabled(string provider) {             updatewithnewlocation(null);         }          @override         public void onproviderenabled(string provider) {         }          @override         public void onstatuschanged(string provider, int status, bundle extras) {         }      };      private void updatewithnewlocation(location location) {         string timestamp = (string) dateformat.format("hh:mm:ss",                 new java.util.date());         string locationstring = location.getlatitude() + ", "                 + location.getlongitude();          log.i("main", "time = " + timestamp + " location = " + locationstring);     } } 

this code works nexus 4, if use galaxy gio location off 30 miles..

network location based on nearest cell tower phone connected to. possible nexus4 connected 1 cell tower , galaxy gio connected cell tower bit far device is. accurate fix, use gps_provider. had issue before when using network_provider. got rid of when started using gps_provider gave me accurate fixes


Comments