|
||
|
![]() |
![]() |
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
Herramientas |
#1
|
||||
|
||||
ayudaa geolocalizacon muuy lenta!!
Hola mi problema es que en mi app utilizo la geolocalizacion pero esta tarda demasiado , es por lo que utilizo o asi es??
asi esta mi codigo: Código:
mport android.app.AlertDialog; import java.io.IOException; import java.util.List; import java.util.Locale; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; import com.google.android.maps.Overlay; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Point; import android.location.Address; import android.location.Geocoder; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.CheckBox; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; /** * * @author Inmobart */ public class GoogleMaps extends MapActivity implements LocationListener { private static final String namespace = "http://tempuri.org/"; private static String url="http://xxxxxxxx"; private static final String Metodo = "Reportar"; private static final String accionSoap ="http://tempuri.org/Reportar"; private MapView mapView; private TextView coordenadas; private LocationManager locationManager; private MapController controlMapa = null; //private Mylocation itemizedoverlay; private Geocoder geoCoder; EditText edtxtpoliza,edtxtinciso,edtxtplacassiniestro; CheckBox checkdañopersona,checkdañoauto; String latitud,longitud; class MyOverlay extends Overlay { GeoPoint point; public MyOverlay(GeoPoint point) { super(); this.point = point; } @Override public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) { super.draw(canvas, mapView, shadow); Point scrnPoint = new Point(); mapView.getProjection().toPixels(this.point, scrnPoint); Bitmap marker = BitmapFactory.decodeResource(getResources(), R.drawable.marcador_google_maps); canvas.drawBitmap(marker, scrnPoint.x - marker.getWidth() / 2, scrnPoint.y - marker.getHeight() / 2, null); return true; } } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gps); mapView=(MapView) findViewById(R.id.map_view); coordenadas=(TextView) findViewById(R.id.tw_mensaje); edtxt1=(EditText)findViewById(R.id.edtxt1); edtxt2=(EditText)findViewById(R.id.edtxt2); checkdañopersona=(CheckBox) findViewById(R.id.chdañopersona); checkdañoauto=(CheckBox) findViewById(R.id.chdañoauto); edtxt3=(EditText)findViewById(R.id.edtxt3); mapView.setBuiltInZoomControls(true); locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 50, this); } @Override protected boolean isRouteDisplayed() { return false; } @Override public void onLocationChanged(Location location) { if(location!=null) updateLocation(location); } @Override public void onProviderDisabled(String provider) { Intent intent = new Intent( android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(intent); } @Override public void onStatusChanged(String provider, int status, Bundle extras) {} @Override public void onProviderEnabled(String provider) {} protected void updateLocation(Location location){ mapView = (MapView) findViewById(R.id.map_view); controlMapa = mapView.getController(); GeoPoint point = new GeoPoint((int) (location.getLatitude() * 1E6), (int) (location.getLongitude() * 1E6)); Double lat=(Double) (location.getLatitude()); Double lng=(Double) (location.getLongitude()); latitud=String.valueOf(lat); longitud=String.valueOf(lng); controlMapa.animateTo(point); controlMapa.setZoom(30); coordenadas.setText("Latitud:"+location.getLatitude()+"\nLongitud:"+location.getLongitude()); geoCoder = new Geocoder(this, Locale.getDefault()); try { List<Address> addresses = geoCoder.getFromLocation( point.getLatitudeE6() / 1E6, point.getLongitudeE6() / 1E6, 1); String address = ""; if (addresses.size() > 0) { for (int i = 0; i < addresses.get(0).getMaxAddressLineIndex(); i++) address += addresses.get(0).getAddressLine(i) + "\n"; } Toast.makeText(getBaseContext(), address, Toast.LENGTH_SHORT).show(); } catch (IOException e) { e.printStackTrace(); } List<Overlay> mapOverlays = mapView.getOverlays(); MyOverlay marker = new MyOverlay(point); mapOverlays.add(marker); mapView.invalidate(); } Última edición por gohan0189 Día 18/07/12 a las 23:56:06. |
|
#2
|
||||
|
||||
Había un artículo de alguien de Google muy interesante sobre la localización, creo recordar que primero consultaba la caché de localización por si ya había otras aplicaciones consultando los datos. Luego miraba la localización wifi para tener un rango más cerrado y ya finalmente esperaba las actualizaciones del GPS (que tardan más y debe ser lo que estás usando).
De todas formas hablo de memoria, no he usado localización todavía ![]()
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
#3
|
||||
|
||||
Referente a tu duda de localizacion
Una pregunta antes de poder responder, cada cuanto quieres que se realice la lectura por distancia o por tiempo ? o quieres una combinación de ambos ?
|
#4
|
||||
|
||||
podria ser la memoria , talves ocupa muchos recursos la localizcion y por eso tarda mucho o que otros factores pudieran ser alguien sabe???
|
#5
|
||||
|
||||
pues mas bien seria cada que se oprima un boton es que me tiene que dar la localizacion
|
#6
|
||||
|
||||
usa un criterio
Te respondo un poco rapido mas tarde te paso un poco de codigo pero simple tu tienes unevento click para tu boton en ese evento vas a crear un criterio y este le pides que sea ACURRENCI_FINE y con este creas el location de este modo el sabra en cada click con que proveedor tiene la informacion, esto sera al instante, mas tarde te paso unas lineas de codigo para dejarte mas clara la idea.
|
#7
|
||||
|
||||
siii porfavor , si pudieras ayudarme con el codigo te lo agradeceria muchooo !!!!!!!!
|
#8
|
||||
|
||||
![]() public class MainActivity extends Activity {
/** Called when the activity is first created. * LocationManager locationManager; LocationListener locationListener; Location location; int cont = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button boton = (Button) findViewById(R.id.button1); boton.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); Criteria criterioProveedor = new Criteria(); criterioProveedor.setAccuracy(Criteria.ACCURACY_CO ARSE); criterioProveedor.setAltitudeRequired(false); criterioProveedor.setBearingRequired(false); String strMejorProveedor = locationManager.getBestProvider(criterioProveedor, true); location = locationManager.getLastKnownLocation(strMejorProve edor); Toast.makeText(getApplicationContext(), "Latitude: "+location.getLatitude()+" Longitud: "+location.getLongitude(), Toast.LENGTH_LONG); try{ if(location != null){ locationManager.requestLocationUpdates(LocationMan ager.GPS_PROVIDER, 1000, 0, locationListener); Log.w("Localizacion", " La latitud es: "+location.getLatitude()+ " La longitud es: "+location.getLongitude()); }else{ location = locationManager.getLastKnownLocation(LocationManag er.NETWORK_PROVIDER); Log.w("Localizacion"," La latitud es: "+location.getLatitude()+ " La longitud es: "+location.getLongitude()); locationManager.requestLocationUpdates(strMejorPro veedor, 1000, 0, locationListener); } }catch(NullPointerException e){ } } }); locationListener = new LocationListener() { @Override public void onStatusChanged(String arg0, int arg1, Bundle arg2) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String arg0) { // TODO Auto-generated method stub } @Override public void onProviderDisabled(String arg0) { // TODO Auto-generated method stub } @Override public void onLocationChanged(Location arg0) { // TODO Auto-generated method stub } }; } } ![]() ![]() 07-20 12:02:52.478: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669
07-20 12:02:52.708: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:52.918: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:53.158: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:53.368: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:53.588: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:53.818: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:54.078: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:54.288: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:54.488: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:54.708: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:54.948: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:55.168: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:55.358: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:55.578: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:55.788: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:56.008: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:56.238: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:56.688: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:56.948: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 07-20 12:02:59.248: W/Localizacion(27292): La latitud es: 19.3692643 La longitud es: -99.2667669 ![]() ![]() Cualquier cosa quedo a tus ordenes |
Gracias de parte de: | ||
#9
|
||||
|
||||
ok, esto solo seria para recibir las coordenadas no??, pero si yo utilizo u mapview para poder utilizar la api de google maps??
|
#10
|
||||
|
||||
bueno es que no se si hayas checado el codigo que puse, talves basandonos en ese pudieras decirme que pudiera hacer para que fuera mas rapido o xq se tarda tanto en localizar??
|
#11
|
||||
|
||||
el posicionamiento es el mismo
El posicionamiento es el mismo lo unicoque hay que pasar las coordenadas al point mas tarde checo bien tu codigo pero tu problema era el listener que le pedias gps afuerza yque fuera de 60000 a 50 pero mas tarde te lo checo, quedo a tus ordenes
|
Gracias de parte de: | ||
#12
|
||||
|
||||
si porfavor si puedes checrlo y decirme cual 4es mi error o que le puedo modificar t4e lo agradeceria
|
#13
|
||||
|
||||
aa de lo de que fuera gps a fuerza , asi tiene que ser xq la app que hice trabaja con el gps
|
![]() |
![]() |
||||||
|