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

Respuesta
 
Herramientas
  #1  
Viejo 18/07/12, 23:35:24
Array

[xs_avatar]
gohan0189 gohan0189 no está en línea
Miembro del foro
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL

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();
}
o hay una manera para que lo realice mas rapido??

Última edición por gohan0189 Día 18/07/12 a las 23:56:06.
Responder Con Cita


  #2  
Viejo 19/07/12, 00:18:20
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

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!
Responder Con Cita
  #3  
Viejo 19/07/12, 18:39:52
Array

[xs_avatar]
Franco_MC Franco_MC no está en línea
Usuario novato en la web
 
Fecha de registro: jun 2012
Mensajes: 14
Modelo de smartphone: lg 990h
Tu operador: Movistar
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 ?
Responder Con Cita
  #4  
Viejo 19/07/12, 21:03:57
Array

[xs_avatar]
gohan0189 gohan0189 no está en línea
Miembro del foro
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL

podria ser la memoria , talves ocupa muchos recursos la localizcion y por eso tarda mucho o que otros factores pudieran ser alguien sabe???
Responder Con Cita
  #5  
Viejo 19/07/12, 21:05:04
Array

[xs_avatar]
gohan0189 gohan0189 no está en línea
Miembro del foro
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL

pues mas bien seria cada que se oprima un boton es que me tiene que dar la localizacion
Responder Con Cita
  #6  
Viejo 20/07/12, 03:16:16
Array

[xs_avatar]
Franco_MC Franco_MC no está en línea
Usuario novato en la web
 
Fecha de registro: jun 2012
Mensajes: 14
Modelo de smartphone: lg 990h
Tu operador: Movistar
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.
Responder Con Cita
  #7  
Viejo 20/07/12, 17:33:19
Array

[xs_avatar]
gohan0189 gohan0189 no está en línea
Miembro del foro
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL

siii porfavor , si pudieras ayudarme con el codigo te lo agradeceria muchooo !!!!!!!!
Responder Con Cita
  #8  
Viejo 20/07/12, 19:07:10
Array

[xs_avatar]
Franco_MC Franco_MC no está en línea
Usuario novato en la web
 
Fecha de registro: jun 2012
Mensajes: 14
Modelo de smartphone: lg 990h
Tu operador: Movistar
 Cita:
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

}
};

}
}
solo recuerda que le tienes que dar permisos en el manifest

 Cita:
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
estos son algunas lecturas del log para que te des una idea de la velocidad a la que se estan obteniendo los datos, bueno la velocidad a la que preciono el boton

Cualquier cosa quedo a tus ordenes
Responder Con Cita
Gracias de parte de:
  #9  
Viejo 20/07/12, 20:15:49
Array

[xs_avatar]
gohan0189 gohan0189 no está en línea
Miembro del foro
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL

ok, esto solo seria para recibir las coordenadas no??, pero si yo utilizo u mapview para poder utilizar la api de google maps??
Responder Con Cita
  #10  
Viejo 20/07/12, 20:21:30
Array

[xs_avatar]
gohan0189 gohan0189 no está en línea
Miembro del foro
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL

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??
Responder Con Cita
  #11  
Viejo 20/07/12, 21:19:08
Array

[xs_avatar]
Franco_MC Franco_MC no está en línea
Usuario novato en la web
 
Fecha de registro: jun 2012
Mensajes: 14
Modelo de smartphone: lg 990h
Tu operador: Movistar
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
Responder Con Cita
Gracias de parte de:
  #12  
Viejo 23/07/12, 18:13:56
Array

[xs_avatar]
gohan0189 gohan0189 no está en línea
Miembro del foro
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL

si porfavor si puedes checrlo y decirme cual 4es mi error o que le puedo modificar t4e lo agradeceria
Responder Con Cita
  #13  
Viejo 25/07/12, 18:36:46
Array

[xs_avatar]
gohan0189 gohan0189 no está en línea
Miembro del foro
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL

aa de lo de que fuera gps a fuerza , asi tiene que ser xq la app que hice trabaja con el gps
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 21:49:34 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /