Если вы хотите получить информацию о местоположении только с датчика GPS в Xamarin Android. Вы должны использовать Android нативный API для достижения этой цели. Если вы использовали Xamarin.Essentials
, он получит координаты от провайдера GPS, провайдера сети, провайдера пассивного доступа.
Здесь работает GIF. ![enter image description here](https://i.stack.imgur.com/C1T9B.gif)
Добавьте это разрешение.
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
И создайте экземпляр LocationManager следующим образом:
LocationManager locationManager = (LocationManager)Android.App.Application.Context.GetSystemService(Context.LocationService);
И затем внедрите LocationListener
и получить координаты по GPS:
MyLocationListener locationListener = new MyLocationListener(this);
locationManager.RequestLocationUpdates(LocationManager.GpsProvider, 5000, 10, locationListener);
Код MyLocationListener.
public class MyLocationListener : Java.Lang.Object, ILocationListener
{
private MainActivity mainActivity;
public MyLocationListener(MainActivity mainActivity)
{
this.mainActivity = mainActivity;
}
public void OnLocationChanged(Location loc)
{
Toast.MakeText(
mainActivity,
"Location changed: Lat: " + loc.Latitude + " Lng: "
+ loc.Longitude, ToastLength.Short).Show();
}
public void OnProviderDisabled(string provider)
{
// throw new NotImplementedException();
}
public void OnProviderEnabled(string provider)
{
// throw new NotImplementedException();
}
public void OnStatusChanged(string provider, [GeneratedEnum] Availability status, Bundle extras)
{
// throw new NotImplementedException();
}
}
В конце не забудьте запросить разрешение во время выполнения.