我已经使用了下面的代码,一切正常,除了调用onlocationchanged,即使我坐在同一个位置。
我想只有当我向右移动时才应该调用它?
我只想在移动了一段距离后才能找到位置。
请帮帮我。
提前谢谢。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
locationMgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationMgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0,
this);
}
@Override
public void onLocationChanged(Location location) {
Toast.makeText(this, "Working!", Toast.LENGTH_SHORT).show();
if (location != null) {
double lat = location.getLatitude();
double lng = location.getLongitude();
String Text = "Latitud = " + lat + "\nLongitud = " +
lng;
Toast.makeText(getBaseContext(),Text,Toast.LENGTH_SHORT).show();
}
}
最佳答案
您正在以尽可能短的间隔/距离请求位置更新
locationMgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0,
this);
这就是文档中关于这些参数的内容
“可以使用mintime参数控制位置更新间隔。位置更新之间的运行时间永远不会少于mintime,尽管这可能更多地取决于位置提供程序实现和其他应用程序请求的更新间隔。”
mindistance参数还可以用于控制位置更新的频率。如果大于0,则位置提供程序将仅在位置至少更改了mindistance米,并且至少经过了mintime毫秒时才向应用程序发送更新。然而,对于位置提供商来说,使用mindistance参数来节省电量更为困难,因此mintime应该是节省电池寿命的主要工具。
我个人在我的应用程序中使用10秒10米的最小时间
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000,
10, locationListener);