我正在开发一个接近警报相关的项目。为此,每当我打开我的应用程序时,我都需要准确了解我的位置。即使我遵循 android 文档规定的正确编码实践,我也没有得到预期的结果。
为什么在 getLastKnownLocation 的整个 android Geolocation 编码中没有替代命令可以让我们知道我们现在所处的位置。
我在同一行中做了一个 javascript 编码。那里我的代码工作正常。我的设备在那里运行良好的描述性地址和坐标。这些命令 getCurrentPosition 和 watchPosition 通过它们的事件处理回调给出了一个漂亮的响应。为什么在 android 地理定位用语中没有 getCurrentLocation?
即使我遵循了相关的编码实践,当我从一个地方移动到另一个地方时,实现 LocationListener 的 MyLocationListener myLocationUpdate 也不会更新我的新位置。我将 MINIMUM_DISTANCE_CHANGE_FOR_UPDATES 指定为 1(以米为单位),将 MINIMUM_TIME_BETWEEN_UPDATES 指定为 1000(以毫秒为单位)。
我在下面给出重要的代码片段以了解问题
在活动的 onCreate 处理程序中
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean enabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (!enabled) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
myLocationUpdate = new MyLocationListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,MINIMUM_TIME_BETWEEN_UPDATES,MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, myLocationUpdate);
retrieveLocationButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"Finding Location",Toast.LENGTH_LONG).show();
showCurrentLocation();
}
});
latituteField = (TextView) findViewById(R.id.display_Location);
显示当前位置();
在 showCurrentLocation 函数中,我使用 locationManager.getLastKnownLocation(provider) 来检索该位置。通过使用 GeoCoder 对象和命令 geocoder.getFromLocation(latitude, longitude, 1) 来获取坐标的第一个地址匹配。// 处理位置变化事件的内部类 private 类 MyLocationListener 实现 LocationListener 包含所有重写的函数,包括 public void onLocationChanged(Location location) 但实际上我从所有应用程序中什么都得不到。我已经通过 location.getTime() 记录了时间。它显示了一个固定的较早时间,但不是我指定的时间间隔。