首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Xamarin Android系统中仅从GPS传感器中获取位置信息

Xamarin Android系统中仅从GPS传感器中获取位置信息
EN

Stack Overflow用户
提问于 2020-02-06 08:52:21
回答 1查看 561关注 0票数 1

不管怎样,我可以配置我的android应用程序,只从GPS传感器获取位置信息。我使用Xamarin.Essentials软件包来获取位置信息。在我的清单中,我根据文档添加了以下权限。

代码语言:javascript
运行
复制
<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" />

有谁能告诉我,实现上述请求不需要哪些权限/使用特性?

我尝试了不同的组合,但不确定哪一个是正确的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-07 05:14:37

如果您只想从Xamarin Android中的GPS传感器中检索位置信息。您应该使用Android本机API来实现它。如果您使用Xamarin.Essentials,它将得到由全球定位系统提供商,网络提供商,被动提供商的坐标。

这是运行GIF的。

添加此权限。

代码语言:javascript
运行
复制
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

并创建如下LocationManager实例:

代码语言:javascript
运行
复制
    LocationManager locationManager = (LocationManager)Android.App.Application.Context.GetSystemService(Context.LocationService);

然后实现LocationListener并通过GPS获取坐标:

代码语言:javascript
运行
复制
   MyLocationListener locationListener = new MyLocationListener(this);
   locationManager.RequestLocationUpdates(LocationManager.GpsProvider, 5000, 10, locationListener);

MyLocationListener码。

代码语言:javascript
运行
复制
       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();
    }
}

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60090968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档