2013-10-12 2 views
0

У меня есть один Android-сервис. Эта служба запускает один класс для геолокации. Это код.Служба Android Geolocation

public class Localizar implements LocationListener { 
private LocationManager manejador; 
private Context context; 
private DBAdapter db; 

public Localizar(Context context) { 
    this.context = context; 

    db = new DBAdapter(context); 
} 

public void start() { 
    manejador = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 

    if (manejador.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) { 

     manejador.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 500, 0, this); 

    }else { 

    } 
} 

public void stop() { 
    manejador.removeUpdates(this); 
} 

private void saveData(double longitude, double latitude) { 
    Toast.makeText(context, "G R A B A N D O D A T O S", Toast.LENGTH_LONG).show();  
} 


public void onLocationChanged(Location location) { 

    saveData(location.getLatitude(), location.getLongitude()); 
} 

public void onProviderDisabled(String proveedor) { 
} 

public void onProviderEnabled(String proveedor) { 
} 

public void onStatusChanged(String arg0, int arg1, Bundle bundle) { 
} 

} Моя проблема заключается в том, что метод не onLocationChanged не выполнится. Что я сделал не так ? Спасибо! Я попробовал его на другом телефоне, и он работает правильно, может быть, мой телефон сломан. У меня есть Samsung Galaxy DUOS .....

+0

хау вы проверяете свой код. на устройстве или эмуляторе? –

+0

У вас возникли ошибки? Проверить журналы 1-го –

ответ

0

Существует много причин, почему вы не получите onLocationChanged

Если вы запустите его в службе попробуйте добавить Looper.getMainLooper(), как:

manejador.requestLocationUpdates(
              LocationManager.NETWORK_PROVIDER, 
              500, 
              0, 
              this, 
              Looper.getMainLooper() 
              );