【问题标题】:FusedLocationProviderClient - type or namespace could not be found (error)FusedLocationProviderClient - 找不到类型或命名空间(错误)
【发布时间】:2018-04-02 16:40:23
【问题描述】:

很抱歉,如果这真的很简单(也未能在 Marshmallow 模拟器上安装 google play 服务,并且有点搞砸了!)。

我的目标是在 Visual Studio 2017 (15.6.3) 上的 Xamarin Android C# 项目中获取 GPS 数据。

我正在关注 Xamarin 定位服务演练 (https://docs.microsoft.com/en-gb/xamarin/android/platform/maps-and-location/location#using-the-fused-location-provider) 和源代码示例。我尝试过分别针对 Android 6.0(我的首选)以及 7.1 和 MonoAndroid6 和 MonoAndroid71。

我已经为 Xamarin.GooglePlayService.Location、.Maps 和所需的“基本”库(.Base、.Basement 和 .Tasks)安装了 NuGet 包 - 版本 32.961.0 和 42.1021.1(取决于目标)。

以下代码告诉我“找不到类型或命名空间名称'FusedLocationProviderClient'(您是否缺少 using 指令或程序集引用?”

private FusedLocationProviderClient fusedLocationProviderClient;

我已经使用对象浏览器来探索这些库,甚至没有看到 FusedLocationProviderClient(只是 FusedLocationProviderApi - 我也在 SO 上读到的它已被弃用......)。

我应该使用“较旧”的定位服务 API 来定位 6.0,还是我缺少其他东西?

非常感谢。

【问题讨论】:

标签: android xamarin xamarin.android fusedlocationproviderclient


【解决方案1】:

只需添加 NuGet 包 Xamarin.GooglePlayServices.Location

【讨论】:

  • 正是我所缺少的。很惊讶它不在文档中。
【解决方案2】:

Xamarin.Android 项目涉及三个 API 级别,一个是特定于 Xamarin 的,即一个 Target Framework不是与设置 @987654325 的 Target Android Version 混淆@ 在应用的 Manifest 中。

Target Framework – 指定在构建应用程序时使用哪个框架。 Xamarin.Android 在编译时使用此 API 级别。

Minimum Android Version – 指定您希望应用支持的最旧 Android 版本。 Android 在运行时使用此 API 级别。

Target Android Version – 指定您的应用打算运行的 Android 版本。 Android 在运行时使用此 API 级别。

将您的Target Framework 设置为最新最好的(当前为8.1),将Target Android Version 设置为6.0 并(重新)安装您的软件包。

了解 Android API 级别:https://docs.microsoft.com/en-us/xamarin/android/app-fundamentals/android-api-levels?tabs=vswin

【讨论】:

  • 感谢您指出这一点,非常有用!在(重新)安装时,我需要直接在 csproj 文件中删除一些挥之不去的引用,这会导致问题,但我们现在都在工作 - 谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-14
  • 2019-09-14
  • 2013-10-23
相关资源
最近更新 更多