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
Post a Comment