我有一个简单的Android代码,可以通过Web服务定期向数据库发送GPS位置。出于测试目的,我将minTime设置为2000ms。
lm=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
ll=new SpeedoActionListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000, 0,ll);
但是...
Web服务托管在IIS7上,我的手机和笔记本电脑通过Wi-Fi连接
虽然我的手机没有移动,为什么它会发送不同的位置?
private class SpeedoActionListener implements LocationListener
{
String result=null;
@Override
public void onLocationChanged(Location location) {
if(location!=null) {
lati=location.getLatitude();
longi=location.getLongitude();
String mylati=Double.toString(lati);
String mylongi=Double.toString(longi);
WebServiceCaller obj=new WebServiceCaller();
result=obj.sendLocationData(mylongi, mylati);
resultText=(TextView)findViewById(R.id.result);
resultText.setText(result);
}
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
}
答案 0 :(得分:5)
在低精度设置中,数据将从Wifi网络接收。检查Android手机上的设置/位置/使用无线网络复选框。
答案 1 :(得分:4)
Android在可用时使用GPS,但不仅仅依赖于GPS。如指南主题Obtaining User Location中所述,其使用什么数据源的内部是一个复杂的主题。例如,位置变化可能来自电话切换策略以节省电池寿命。
答案 2 :(得分:2)
GPS具有固有的不精确性,所以我预计会有轻微的变化。我不知道为什么当你转向GPS时它会不断变化(正如其他答案所指出的那样,它可能正在使用像WiFi三角测量这样的替代来源)。