仅从Xamarin Android中的GPS传感器中检索位置信息

问题描述 投票:1回答:1

无论如何,我可以将我的android应用配置为仅从GPS传感器获取位置信息。我正在使用Xamarin.Essentials包来获取位置信息。在清单中,我根据文档添加了以下权限。

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-feature android:name="android.hardware.location.network" android:required="false" />

<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />

<uses-sdk android:minSdkVersion="25" android:targetSdkVersion="28" />

任何人都可以让我知道实现上述请求不需要所有许可/使用功能吗?

我尝试了这种方式的不同组合,但不确定哪一种是正确的。

android xamarin.android android-manifest android-gps xamarin.essentials
1个回答
1
投票

如果您仅想从Xamarin Android中的GPS传感器中检索位置信息。您应该使用Android本机API来实现它。如果使用Xamarin.Essentials,它将通过GPS提供商,网络提供商,被动提供商获取坐标。

这里正在运行GIF。enter image description here

添加此权限。

    <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();
    }
}

最后,不要忘记请求运行时权限。

© www.soinside.com 2019 - 2024. All rights reserved.