仅从 Xamarin Android 中的 GPS 传感器检索位置信息
Posted
技术标签:
【中文标题】仅从 Xamarin Android 中的 GPS 传感器检索位置信息【英文标题】:Retrieve Location Information only from GPS Sensor in Xamarin Android 【发布时间】:2020-05-22 06:19:05 【问题描述】:无论如何我可以将我的 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" />
谁能告诉我实现上述请求不需要哪些所有权限/使用功能?
我尝试了不同的组合,但不确定哪个是正确的。
【问题讨论】:
【参考方案1】:如果您只想从 Xamarin Android 中的 GPS 传感器检索位置信息。
您应该使用 Android 原生 API 来实现它。如果您使用Xamarin.Essentials
,它将通过 GPS Provider、Network Provider、Passive Provider 获取坐标。
这里正在运行 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();
最后别忘了申请运行时权限。
【讨论】:
以上是关于仅从 Xamarin Android 中的 GPS 传感器检索位置信息的主要内容,如果未能解决你的问题,请参考以下文章
Android Xamarin 后台服务 - 每 x 分钟获取一次 GPS 位置?