java - How to get updated doubles values in other class -


i'm working google maps. think correctly obtaining lat/long pair - i.e. coordinates i'm trying display on map - , correctly updating within signin class.

i have map class , i'd able updated coordinates signin class. however, current attempts gps coordinates return default values i've hardcoded signin class.

how can updated values signin class within map class?

import java.io.ioexception; import java.util.arraylist; import java.util.list;  import org.apache.http.httpresponse; import org.apache.http.namevaluepair; import org.apache.http.client.httpclient; import org.apache.http.client.responsehandler; import org.apache.http.client.entity.urlencodedformentity; import org.apache.http.client.methods.httppost; import org.apache.http.impl.client.basicresponsehandler; import org.apache.http.impl.client.defaulthttpclient; import org.apache.http.impl.conn.singleclientconnmanager; import org.apache.http.message.basicnamevaluepair;  import com.google.android.gms.maps.model.latlng;  import android.app.fragment; import android.app.progressdialog; import android.content.context; import android.content.intent; import android.os.bundle; import android.provider.openablecolumns;  import android.util.log; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.view.view.onclicklistener; import android.widget.button; import android.widget.edittext; import android.widget.imageview; import android.widget.textview; import android.widget.toast;  public class signin extends fragment {      context context_frag1;      httppost httppost;     stringbuffer buffer;     httpresponse response;     httpclient httpclient;     list<namevaluepair> namevaluepairs;     intent intent;      protected context context;     button b;     button sendbtn;     //string m_username,m_password;      progressdialog dialog = null;     public double latitude = 32.3234;// these values getting other class update them down here y getting these     public double longitude = 72.456;      edittext username,password;      public signin() { }      @override     public view oncreateview(layoutinflater inflater, viewgroup container,             bundle savedinstancestate) {          view view=inflater.inflate(r.layout.fragment_layout_two,container, false);         b = (button)view.findviewbyid(r.id.button1);           username = (edittext)view.findviewbyid(r.id.username);         password = (edittext)view.findviewbyid(r.id.password);          b.setonclicklistener(new onclicklistener() {             @override             public void onclick(view v) {                  new thread(new runnable() {                     public void run() {                         login();                         }                 }).start();               }         });          return view;     }      @suppresswarnings("deprecation")     void login(){          while(true){              try{                              httpclient=new defaulthttpclient();                 httppost= new httppost("my web adderss");                  namevaluepairs = new arraylist<namevaluepair>(1);                 // use same variable name posting i.e android side variable name , php side variable name should similar,                   namevaluepairs.add(new basicnamevaluepair("username",m_username.gettext().tostring().trim()));                 namevaluepairs.add(new basicnamevaluepair("password",m_password.gettext().tostring().trim()));                 //namevaluepairs.add(new basicnamevaluepair("id",m_id.gettext().tostring().trim()));                    httppost.setentity(new urlencodedformentity(namevaluepairs));                  response=httpclient.execute(httppost);                  responsehandler<string> responsehandler = new basicresponsehandler();                  final string response = httpclient.execute(httppost, responsehandler);                 system.out.println("response : " + response);                   // delay send loactions                 getactivity().runonuithread(new runnable() {                     public void run() {                          try{                             string strn = response.replaceall("[a-za-z//:]", "");                                    string[] parts = strn.split(",");// separte lat lng ,                              string part1 = parts[0];                              string part2 = parts[1];                              latitude = double.parsedouble(part1);                               longitude = double.parsedouble(part2);                             //here lat , lng  these updating dynamically                             toast.maketext(getactivity().getapplicationcontext(), ""+latitude +""+ longitude, toast.length_long).show();                         } catch (arrayindexoutofboundsexception e) {                             toast.maketext(getactivity().getapplicationcontext(), "arrayindexoutofboundsexception", toast.length_long).show();                         }                          try {                             response.getentity().consumecontent();                             httpclient.getconnectionmanager().closeexpiredconnections();                             httpclient.getconnectionmanager().shutdown();                         } catch (ioexception e) {                             toast.maketext(getactivity().getapplicationcontext(), "ioexception", toast.length_long).show();                             e.printstacktrace();                         }                      }                  });              }catch(exception e){                 //dialog.dismiss();                 log.i("catch", "i got exception here", e);             }         }     } } 

now have other map class want these lat lng

> import com.google.android.gms.common.connectionresult; >     import com.google.android.gms.common.googleplayservicesutil;  >     import com.google.android.gms.common.api.googleapiclient;  >     import com.google.android.gms.location.fusedlocationproviderapi;  >     import com.google.android.gms.location.locationlistener;  >     import com.google.android.gms.location.locationrequest;  >     import com.google.android.gms.location.locationservices;  >     import com.google.android.gms.maps.cameraupdate;  >     import com.google.android.gms.maps.cameraupdatefactory;  >     import com.google.android.gms.maps.googlemap;  >     import com.google.android.gms.maps.mapview;  >     import com.google.android.gms.maps.supportmapfragment;  >     import com.google.android.gms.maps.model.bitmapdescriptorfactory;  >     import com.google.android.gms.maps.model.cameraposition;  >     import com.google.android.gms.maps.model.latlng;  >     import com.google.android.gms.maps.model.marker;  >     import com.google.android.gms.maps.model.markeroptions; >      >     import android.app.dialog; import android.content.intent; >     import android.location.location; import android.os.bundle;  >     import android.support.v4.app.fragmentactivity;  >     import android.util.log; >     import android.view.menu; import android.view.menuitem;  >     import android.widget.toast; >      >      public class map extends fragmentactivity implements  >       googleapiclient.connectioncallbacks, >       googleapiclient.onconnectionfailedlistener, locationlistener{ >      >      private static final int gps_errordialog_request = 9001;      >       googlemap mmap;      >       //mapview vmap;      >       marker marker; >        >      >        private locationrequest mlocationrequest; >           private googleapiclient mgoogleapiclient; >        //private markeroptions option1; >        >                               private static final float zoom =12;    public string title = "me";     private static final string tag = "my map"; >      fusedlocationproviderapi mlocationclient; >      >               int zoom=13; >               @override   protected void oncreate(bundle savedinstancestate) {        super.oncreate(savedinstancestate); >                   if (servicesok()) { >                           setcontentview(r.layout.activity_map);          //vmap = (mapview)findviewbyid(r.id.mapview); >               //vmap.oncreate(savedinstancestate); >                           if(initmap()){ >                   toast.maketext(this, "ready map!", toast.length_short).show(); >                    >                   mgoogleapiclient = new googleapiclient.builder(this) >                     .addapi(locationservices.api) >                     .addconnectioncallbacks(this) >                     .addonconnectionfailedlistener(this) >                     .build(); >                >                    mgoogleapiclient.connect(); >                >                    new thread(new runnable() { >                           public void run() { >                               vanlocation();   >                           } >      >                         }).start();    >                        >                       }else{ >                   toast.maketext(this, "map not available !", toast.length_short).show();             } >                       }       else{ >                >                   setcontentview(r.layout.activity_main);         }   } >      >           public boolean oncreateoptionsmenu(menu menu) {         // inflate >      menu; adds items action bar if present. >           getmenuinflater().inflate(r.menu.main, menu); >                   return true;    }       public boolean servicesok() {       int isavailable = >     googleplayservicesutil.isgoogleplayservicesavailable(this); >                   if (isavailable == connectionresult.success) {          return true;        }       else if >      (googleplayservicesutil.isuserrecoverableerror(isavailable)) { >               dialog dialog = googleplayservicesutil.geterrordialog(isavailable, >      this, gps_errordialog_request);          dialog.show();      }       else { >               toast.maketext(this, "can't connect google play services", >      toast.length_short).show();      }       return false; >               }   private void vanlocation() { >                   while(true){ >               try{             >            >                   runonuithread(new runnable() { >                                    >                       public void run() { >                            >                       if(marker!=null){ >                               marker.remove(); >                           } >                           // here want update value default values  >                           signin ll = new signin(); >                           double lat=ll.lat; >                           double lng=ll.lng;  >                       gotolocation(lat , lng , zoom); >                            >                            >                    >                    >                       } >                   }); >                   thread.sleep(2500); >                    >               }catch(exception e){ >                    >                   system.out.println("exception : " + e.getmessage()); >               } >                >               } >               }   private boolean initmap() {         if(mmap == null){           supportmapfragment mapfrag =  >                       (supportmapfragment) getsupportfragmentmanager().findfragmentbyid(r.id.map);        mmap = >      mapfrag.getmap();        mmap.setmylocationenabled(true);                 >           mmap.getuisettings().setzoomcontrolsenabled(true); >           mmap.getuisettings().setmylocationbuttonenabled(true);      // >      gotolocation(lat , lng , zoom); >                   } >                   return (mmap != null);  }       private void gotolocation(double lat , double lng , float zoom){        latlng ll = new latlng(lat, lng); >           cameraupdate update = cameraupdatefactory.newlatlngzoom(ll, zoom); >           mmap.animatecamera(update);         string t="van";         setmarker(t, >      ll.latitude, ll.longitude);  }       @override   public boolean >      onoptionsitemselected(menuitem item) {    >                   return super.onoptionsitemselected(item);   } >        >       >       @override >         protected void onstart() { >             super.onstart(); >             // connect client. >             mgoogleapiclient.connect(); >          } >      >       @override   protected void onstop() {       super.onstop(); >           mapstatemanager mgr = new mapstatemanager(this); >           mgr.savemapstate(mmap, marker); >            >           if(mgoogleapiclient.isconnected()) { >                 mgoogleapiclient.disconnect(); >            } >               } >               @override   protected void onresume() {         super.onresume();       mapstatemanager mgr = new mapstatemanager(this);    cameraposition >      position =mgr.getsavedcameraposition(mmap);      markeroptions m = >     mgr.getmarker(mmap); >        >                   if(position !=null){        cameraupdate update = cameraupdatefactory.newcameraposition(position); >     mmap.movecamera(update);      mmap.setmaptype(mgr.getsavedmaptype()); >            >       setmarker(m.gettitle(),m.getposition().latitude,m.getposition().longitude); >       //mmap.addmarker(m); >                       }   } >      private void setmarker(string locality, double lat, double lng) { >        >        >           markeroptions options = new markeroptions() >               .title(locality+lat+lng)            .position(new latlng(lat, lng)) >       //.icon(bitmapdescriptorfactory.fromresource(r.drawable.ic_mapmarker)); >               .icon(bitmapdescriptorfactory >               .defaultmarker(bitmapdescriptorfactory.hue_blue));      marker = >      mmap.addmarker(options);         } >               @override   public void onconnectionfailed(connectionresult arg0) { >            >               } >       >       @override   public void onconnected(bundle arg0) { >            >                   mlocationrequest = locationrequest.create(); >            mlocationrequest.setpriority(locationrequest.priority_high_accuracy); >              mlocationrequest.setinterval(1000); // update location every second >      >             locationservices.fusedlocationapi.requestlocationupdates( >                     mgoogleapiclient, mlocationrequest, this); >               } >       @override   public void onconnectionsuspended(int arg0) {        >      log.i(tag, "googleapiclient connection has been suspend"); >               } >      >       @override   public void onlocationchanged(location location) { >           //string msg ="location: " + location.getlatitude() + "," + >      location.getlongitude();         //toast.maketext(getapplicationcontext(), >      msg, toast.length_short).show();         //latlng ll = new >      latlng(location.getlatitude(),  location.getlongitude()); >           //cameraupdate update = cameraupdatefactory.newlatlngzoom(ll, zoom); >           //mmap.animatecamera(update);       //string t="me";        //setmarker(t, >      ll.latitude, ll.longitude);  } >        >       >        } 

if remove memory leaks, can use use localbroadcast send message other activity.

receiveractivity.java

this activity wait event occur named your-custom-event-name.

@override public void oncreate(bundle savedinstancestate) {      ...      // register receive messages.     // registering observer (mmessagereceiver) receive intents     // actions named "custom-event-name".     localbroadcastmanager.getinstance(this).registerreceiver(mmessagereceiver,     new intentfilter("your-custom-event-name"));  }  // our handler received intents. called whenever intent // action named "custom-event-name" broadcasted. private broadcastreceiver mmessagereceiver = new broadcastreceiver() {@override     public void onreceive(context context, intent intent) {         // data included in intent         string lat = intent.getstringextra("lat");         string lng = intent.getstringextra("lat");         log.d("receiver", "got lat : " + lat + " lgn : "+lng);     } };  @override protected void ondestroy() {     // unregister since activity closed.     localbroadcastmanager.getinstance(this).unregisterreceiver(mmessagereceiver);     super.ondestroy(); } 

senderactivity.java

use following short of code send type of data other activity

intent intent = new intent("your-custom-event-name"); // can include data. intent.putextra("lat", "1"); intent.putextra("lng", "5"); localbroadcastmanager.getinstance(this).sendbroadcast(intent); 

Comments

Popular posts from this blog

Email notification in google apps script -

c++ - Difference between pre and post decrement in recursive function argument -

javascript - IE11 incompatibility with jQuery's 'readonly'? -