2013-10-12 101 views
0

我有一个Android服务。此服务启动一个地理位置类。这是代码。Android服务地理位置

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永远不会执行。我做错了什么? 谢谢! 我在另一部手机上试过了,它可以正常工作,也许我的手机坏了。我有一个三星Galaxy DUOS .....

+0

如何你在测试你的代码吗?在设备或模拟器上? –

+0

你有没有得到任何错误?首先检查日志 –

回答

0

有很多原因,你没有得到onLocationChanged

如果在服务运行时也尝试添加Looper.getMainLooper(),如:

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