android - How to update the user location after enabling the GPS from an in App prompt -


i developing android app prompts user enable gps if it's not on , have used alertdialog purpose. after enable gps settings , come app pressing button, mapview doesn't reflect current location. although if have gps on before running app, app displays location. want know method use refresh user location after enabling gps purpose. relevant article help.

following code gps part:

gpstracker.java

public class gpstracker extends service implements locationlistener {  private final context mcontext;  // flag gps status boolean isgpsenabled = false;  // flag network status boolean isnetworkenabled = false;  // flag gps status boolean cangetlocation = false;  location location; // location double latitude; // latitude double longitude; // longitude  // minimum distance change updates in meters private static final long min_distance_change_for_updates = 10; // 10 meters  // minimum time between updates in milliseconds private static final long min_time_bw_updates = 1000 * 60 * 1; // 1 minute  // declaring location manager protected locationmanager locationmanager;  public gpstracker(context context) {     this.mcontext = context;     getlocation(); }  /******/     /****/   public location getlocation() {     try {         locationmanager = (locationmanager) mcontext                 .getsystemservice(location_service);          // getting gps status         isgpsenabled = locationmanager                 .isproviderenabled(locationmanager.gps_provider);           // getting network status         isnetworkenabled = locationmanager                 .isproviderenabled(locationmanager.network_provider);           if (!isgpsenabled && !isnetworkenabled) {             // no network provider enabled         } else {             this.cangetlocation = true;             if (isnetworkenabled) {                 locationmanager.requestlocationupdates(                         locationmanager.network_provider,                         min_time_bw_updates,                         min_distance_change_for_updates, this);                  if (locationmanager != null) {                      location = locationmanager                             .getlastknownlocation(locationmanager.network_provider);                     if (location != null) {                         latitude = location.getlatitude();                         longitude = location.getlongitude();                     }                 }             }             // if gps enabled, latitude/longitude using gps services             if (isgpsenabled) {                 if (location == null) {                     locationmanager.requestlocationupdates(                             locationmanager.gps_provider,                             min_time_bw_updates,                             min_distance_change_for_updates, this);                     log.d("gps enabled", "gps enabled");                     if (locationmanager != null) {                          location = locationmanager                                 .getlastknownlocation(locationmanager.gps_provider);                         if (location != null) {                             latitude = location.getlatitude();                             longitude = location.getlongitude();                         }                     }                 }             }         }     } catch (exception e) {         e.printstacktrace();     }      return location; }   /**  * stop using gps listener  * calling function stop using gps in app.  */ public void stopusinggps() {     if (locationmanager != null) {         locationmanager.removeupdates(gpstracker.this);     } }   /**  * function latitude  */ public double getlatitude() {     if (location != null) {         latitude = location.getlatitude();     }      // return latitude     return latitude; }   /**  * function longitude  */ public double getlongitude() {     if (location != null) {         longitude = location.getlongitude();     }      // return longitude     return longitude; }  /**  * function check gps/wi-fi enabled  *  * @return boolean  */ public boolean cangetlocation() {     return this.cangetlocation; }   /**  * function show settings alert dialog.  * on pressing settings button launch settings options.  */ public void showsettingsalert() {     alertdialog.builder alertdialog = new alertdialog.builder(mcontext);      // setting dialog title     alertdialog.settitle("gps settings");      // setting dialog message     alertdialog.setmessage("gps not enabled. want go settings menu?");      // on pressing settings button.     alertdialog.setpositivebutton("settings", new dialoginterface.onclicklistener() {         public void onclick(dialoginterface dialog, int which) {             intent intent = new intent(settings.action_location_source_settings);             mcontext.startactivity(intent);         }     });      // on pressing cancel button     alertdialog.setnegativebutton("cancel", new dialoginterface.onclicklistener() {         public void onclick(dialoginterface dialog, int which) {             dialog.cancel();         }     });      // showing alert message     alertdialog.show(); }   @override public void onlocationchanged(location location) { }   @override public void onproviderdisabled(string provider) { }   @override public void onproviderenabled(string provider) { }   @override public void onstatuschanged(string provider, int status, bundle extras) { }   @override public ibinder onbind(intent arg0) {     return null; } } 

the following class makes use of above class display location in mapview

locationactivity.java

public class locationactivity extends activity {  button btngpsshowlocation; button btnsendaddress; button find_rick; textview tvaddress;  applocationservice applocationservice;  button btnshowlocation;  // gpstracker class gpstracker gps;  //google maps implementation googlemap googlemap;  private static final string tag = locationactivity.class.getsimplename();  @override public void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.location_layout);      createmapview();       btnshowlocation = (button) findviewbyid(r.id.btngpsshowlocation);     btnsendaddress = (button) findviewbyid(r.id.btnsendaddress);                 gps = new gpstracker(locationactivity.this);              // check if gps enabled , if enabled  after popup call same fn             mapmycurrentloction();       btnshowlocation.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {          mapmycurrentloction();         }     });       btnsendaddress.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {                   string tag_string_req_send_data = "req_send";                  stringrequest strreq = new stringrequest(request.method.post,                         appconfig.url_autowala_dhundo, new response.listener<string>() {                      @override                     public void onresponse(string response) {                         log.d(tag, "autowala response: " + response.tostring());                           try {                             jsonobject jobj = new jsonobject(response);                             boolean error = jobj.getboolean("error");                             if (!error) {                                 // user stored in mysql                                 // store user in sqlite                                 log.d("autowale ka data","success");                             } else {                                  // error occurred in data sending. error                                 // message                                 string errormsg = jobj.getstring("error_msg");                                 toast.maketext(getapplicationcontext(),                                         errormsg, toast.length_long).show();                             }                         } catch (jsonexception e) {                             e.printstacktrace();                         }                      }                 }, new response.errorlistener() {                      @override                         public void onerrorresponse(volleyerror error) {                             log.e(tag, "data sending error: " + error.getmessage());                             toast.maketext(getapplicationcontext(),                                     error.getmessage(), toast.length_long).show();                         }                     }) {                          @override                         protected map<string, string> getparams() {                             // posting params register url                             map<string, string> params = new hashmap<string, string>();                             params.put("tag", "data_send");                             params.put("latitude", double.tostring(gps.getlatitude()));                             params.put("longitude", double.tostring(gps.getlongitude()));                               return params;                         }                      };                      // adding request request queue                     appcontroller.getinstance().addtorequestqueue(strreq, tag_string_req_send_data);              }         });  }      @override     protected void onpause(){         super.onpause();         mapmycurrentloction();         //super.onresume();     }      @override     protected void onresume(){         super.onresume();         double latitude = gps.getlatitude();         double longitude = gps.getlongitude();         addmarker(latitude,longitude);         //super.onresume(); }  private void createmapview(){     /**      * catch null pointer exception      * may thrown when initialising map      */     try {         if(null == googlemap){             googlemap = ((mapfragment) getfragmentmanager().findfragmentbyid(                     r.id.map)).getmap();             googlemap.getuisettings().setzoomgesturesenabled(true);              /**              * if map still null after attempted initialisation,              * show error user              */             if(null == googlemap) {                 toast.maketext(getapplicationcontext(),                         "error creating map",toast.length_short).show();             }         }     } catch (nullpointerexception exception){         log.e("mapapp", exception.tostring());     } }  /**  * adds marker map  */ private void addmarker(double lat,double lng){      /** make sure map has been initialised **/     if(null != googlemap){         googlemap.addmarker(new markeroptions()                         .position(new latlng(lat,lng))                         .title("your location")                         .draggable(true)         );          //zooming location         float zoomlevel = 16.0f; //this goes 21         latlng coordinate = new latlng(lat, lng);         cameraupdate yourlocation = cameraupdatefactory.newlatlngzoom(coordinate, zoomlevel);         googlemap.animatecamera(yourlocation);     } }  private void mapmycurrentloction(){     if (gps.cangetlocation()) {          double latitude = gps.getlatitude();         double longitude = gps.getlongitude();          addmarker(latitude,longitude);                  /*------- city name coordinates -------- */         string area = null;         geocoder gcd = new geocoder(getbasecontext(), locale.getdefault());         list<address> addresslist = null;         try {             addresslist = gcd.getfromlocation(latitude, longitude, 1);         } catch (ioexception e) {             e.printstacktrace();         }           if (addresslist != null && addresslist.size() > 0) {             address address = addresslist.get(0);             stringbuilder sb = new stringbuilder();             (int = 0; < address.getmaxaddresslineindex(); i++) {                 sb.append(address.getaddressline(i)).append("\n");             }             sb.append(address.getlocality()).append("\n");             sb.append(address.getpostalcode()).append("\n");             sb.append(address.getcountryname());             area = sb.tostring();         }          // \n new line         toast.maketext(getapplicationcontext(), "your location - \nlat: " + latitude + "\nlong: " + longitude + "\n"+area, toast.length_short).show();     }  else {         // can't location.         // gps or network not enabled.         // ask user enable gps/network in settings.         gps.showsettingsalert();          //again search , map location after enabling gps          }     } } 

you`re interest in 'onresume' method. after getting activity 1 invoked. sho in there should update position


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -