Android LocationServices.FusedLocationApi 已弃用

2024-01-21

我不明白为什么LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest, this);“FusedLocationApi”被划掉并指出它已被弃用。点击此处查看图片 https://i.stack.imgur.com/mML1U.jpg

import android.location.Location;
import android.location.LocationListener;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MaintainerMapActivity extends FragmentActivity implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener{

private GoogleMap mMap;
GoogleApiClient mGoogleApiClient;
Location mLastLocaton;
LocationRequest mLocationRequest;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maintainer_map2);
    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}


@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

    // Add a marker in Sydney and move the camera
    LatLng sydney = new LatLng(-34, 151);
    mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
    mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}

@Override
public void onLocationChanged(Location location) {

}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {

}

@Override
public void onProviderEnabled(String provider) {

}

@Override
public void onProviderDisabled(String provider) {

}

@Override
public void onConnected(@Nullable Bundle bundle) {
    mLocationRequest = new LocationRequest();
    mLocationRequest.setInterval(1000);
    mLocationRequest.setFastestInterval(1000);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

    LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest, this);
}

@Override
public void onConnectionSuspended(int i) {

}

@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

}
}

原答案

发生这种情况是因为FusedLocationProviderApi在最新版本的 Google Play 服务中已弃用。你可以检查一下here https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderApi。官方指南现在建议使用融合位置提供者客户端 https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderClient。你可以找到详细的指南here https://developer.android.com/training/location/retrieve-current.html#play-services.

例如在里面onCreate() or onViewCreated()创建一个FusedLocationProviderClient实例

Kotlin

val fusedLocationClient = LocationServices.getFusedLocationProviderClient(requireContext())

要请求最后的已知位置,您所要做的就是致电

fusedLocationClient.lastLocation.addOnSuccessListener { location: Location? ->
            location?.let { it: Location ->
                // Logic to handle location object
            } ?: kotlin.run {
                // Handle Null case or Request periodic location update https://developer.android.com/training/location/receive-location-updates
            }
        }

Java

FusedLocationProviderClient fusedLocationClient = LocationServices.getFusedLocationProviderClient(requireContext());

and

fusedLocationClient.getLastLocation().addOnSuccessListener(requireActivity(), location -> {
        if (location != null) {
            // Logic to handle location object
        } else {
            // Handle null case or Request periodic location update https://developer.android.com/training/location/receive-location-updates
        }
    });

很简单,不是吗?


重要更新(2017 年 10 月 24 日):

昨天谷歌更新了其官方开发者页面一个警告 https://developer.android.com/training/location/retrieve-current.html说的是

请继续使用 FusedLocationProviderApi 类,并且不要迁移到 FusedLocationProviderClient 类,直到 Google Play 服务版本 12.0.0 可用(预计将于 2018 年初发布)。在 12.0.0 版本之前使用 FusedLocationProviderClient 会导致客户端应用程序崩溃设备上的 Google Play 服务已更新。对此造成的任何不便,我们深表歉意。

warning So I think we should continue using the deprecated LocationServices.FusedLocationApi until Google resolves the issue.


最新更新(2017 年 11 月 21 日):

The warning is gone now. Google Play services 11.6 November 6, 2017, release note https://developers.google.com/android/guides/releases says : Fixed FusedLocationProviderClient issue that occasionally caused crashes when Google Play services updated. I think Play Services won't crash when it updates itself in the background. So we can use new FusedLocationProviderClient now.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android LocationServices.FusedLocationApi 已弃用 的相关文章

  • 2^31 次方的 Java 指数错误 [重复]

    这个问题在这里已经有答案了 我正在编写一个java程序来输出2的指数幂 顺便说一句 我不能使用Math pow 但是在 2 31 和 2 32 处我得到了其他东西 另外 我不打算接受负整数 My code class PrintPowers
  • 在 Android 中加密/解密字符串的简单方法

    我的问题是如何加密String String AndroidId Override public void onCreate Bundle savedInstanceState super onCreate savedInstanceSta
  • FragmentActivity 无法解析为类型

    我正在尝试来自的应用程序这个博客 http android developers blogspot com 2011 02 android 30 fragments api html 在延长的同时FragmentActivity 我收到以下
  • 如何更改 Swagger-ui URL 前缀?

    我正在使用 Springfox Swagger2 和 Spring boot 1 5 9 我可以通过此链接访问 swagger UI http localhost 8090 swagger ui html http localhost 80
  • 如何在 IntelliJ IDEA 中运行 akka actor

    来自 Akka 网站文档 然后 这个主要方法将创建所需的基础设施 运行演员 启动给定的主要演员并安排 一旦主要参与者终止 整个应用程序就会关闭 因此 您将能够使用类似于以下的命令运行上面的代码 下列的 java classpath akka
  • Android:WebView/BaseInputConnection 中的退格键

    我在 Android 4 2 中遇到软键盘退格问题 我在 WebView CodeMirror 中有一个自定义编辑器 它使用一个空的
  • 如何在同一设备上运行的 Android 应用程序之间传输文件?

    我正在编写一个与 RESTful 服务交互的 Android 应用程序 该 Web 服务本质上是一个文件系统 并提供元数据以及对文件的 CRUD 访问 我的应用程序检索元数据 并通过ContentProvider 我需要添加与我的应用程序在
  • 在java程序中使用c++ Dll

    我正在尝试使用System LoadLibrary 使用我用 C 编写的一个简单的 dll UseDllInJava java import com sun jna Library import com sun jna Native imp
  • UseCompressedOops JVM 标志有什么作用以及何时应该使用它?

    HotSpot JVM 标志是什么 XX UseCompressedOops我应该做什么以及什么时候使用它 在 64 位 Java 实例上使用它 与不使用它 时 我会看到什么样的性能和内存使用差异 去年大多数 HotSpot JVM 都默认
  • Android - 存储对ApplicationContext的引用

    我有一个静态 Preferences 类 其中包含一些应用程序首选项和类似的内容 可以在那里存储对 ApplicationContext 的引用吗 我需要该引用 以便我可以在不继承 Activity 的类中获取缓存文件夹和类似内容 你使用的
  • Java 8 Stream,获取头部和尾部

    Java 8 引入了Stream http download java net jdk8 docs api java util stream Stream html类似于 Scala 的类Stream http www scala lang
  • 从三点求圆心的算法是什么?

    我在圆的圆周上有三个点 pt A A x A y pt B B x B y pt C C x C y 如何计算圆心 在Processing Java 中实现它 我找到了答案并实施了一个可行的解决方案 pt circleCenter pt A
  • 活动加载缓慢

    我的应用程序中有大约 50 个活动 但其中一个活动非常慢 我的意思是当我按下按钮进入该活动时 需要很长时间 有时会出现黑屏 在该活动中 我有一个按钮 如果我单击该按钮 则需要很长时间才能执行 代码很轻 只有一个Button EditText
  • Tomcat 6 未从 WEB-INF/lib 加载 jar

    我正在尝试找出我的 tomcat 环境中的配置问题 我们的生产服务器正在运行 tomcat 安装并从共享 NFS 挂载读取战争 然而 当我尝试使用独立的盒子 及其配置 进行同样的战争时 我收到下面发布的错误 有趣的是 如果我将 WEB IN
  • Android 的 Intent 和 Parcelable 对象

    为什么我需要打包我的对象 即使我只需将其发送到同一任务的另一个线程 实际上 我需要打开一个甚至可以在同一线程 主线程 上运行的活动 换句话说 为什么 Google 不提供一个 startActivity 版本 它采用通用对象广告参数而不是捆
  • 用于请求带有临时缓存的远程 Observable 的 RxJava 模式

    用例是这样的 我想暂时缓存最新发出的昂贵的Observable响应 但在它过期后 返回到昂贵的源Observable并再次缓存它 等等 一个非常基本的网络缓存场景 但我真的很难让它工作 private Observable
  • 确定 JavaFX 中是否消耗了事件

    我正在尝试使用 JavaFX 中的事件处理来做一些非滑雪道的事情 我需要能够确定手动触发事件后是否已消耗该事件 在以下示例中 正确接收了合成鼠标事件 但调用 Consumer 不会更新该事件 我对此进行了调试 发现 JavaFX 实际上创建
  • Android:透明活动问题

    最近 在我们的一款生产应用程序上 透明活动已停止工作 我的意思是它变成了黑色背景而不是透明背景 当我将活动的背景颜色设置为纯色 即红色 绿色等 时 它的应用不会出现问题 该问题可能是由于迁移到 AndroidX 引起的 但我没有这方面的证据
  • 在数组列表中过滤 Filterable 不取消之前的过滤

    我看过过滤器方法文档 其中显示调用过滤器会取消所有先前未执行的过滤请求 并发布一个稍后将执行的新过滤请求 但我收到的实际回调有些不同 在我的实现中 它不会取消先前的过滤器请求并调用publishResults 最近一次搜索条件后的上一次搜索
  • 如何正确处理 ListView 内的 Android EditText 输入?

    在我的应用程序中 我有一个在 a 中添加 删除 编辑记录的活动SortedMap 该活动作为以下活动的延伸实施ListActivity 我已经实现了自定义ArrayAdapter对于收藏品 Every ListView项目 对应于基础记录

随机推荐

  • 今天的日期 JSP

    我发现自己正在处理一些旧的 JSP 并且想做一些简单的事情 例如以 dd mm yyyy 格式显示今天的日期 好像没那么简单 到目前为止我已经导入了 java util 我尝试过各种事情 比如 String df new SimpleDat
  • 我可以安全地删除对 .pdb 文件的引用吗?

    我正在使用 ASP NET Core 5 0 因为它刚刚发布不久 今天我注意到一些奇怪的事情 我为我的软件制作了一个安装程序 它会自动过滤掉进入我的发布版本的每个 pdb 文件 一种永远不会引起问题的机制 但是新的 NET 5 0运行时似乎
  • Sharepoint 工作流首次运行时失败,但手动运行时成功

    我们正在使用一个 infopath 表单 提交后应该会触发自定义 NET 工作流程 基本上 表单中的信息用于创建新的共享点站点 我看到发生的情况是 工作流程第一次运行 提交表单后自动运行 工作流程出错 当我在工作流程失败后立即手动运行该工作
  • c/c++ 如何获取.exe运行进程的基地址?

    我正在寻找一个可以用来获取基地址的方法 函数 program exe 03262C08 gt B4895A0 该地址来自作弊引擎 基地址已通过指针扫描器找到 在指针扫描仪中我可以按show module list并且有地址program e
  • 在 Laravel 5 中创建嵌套的类别列表

    我对 Laravel 相当陌生 正在尝试为我的应用程序创建一个树状类别结构 这是我用过很长时间但仍然无法实现我想要的代码 我的控制器 public function index categories Category with childr
  • 如何在 Mac OSX 上安装 ffmpeg 的 libx265

    我尝试过多种指南here https hexeract wordpress com 2009 04 12 how to compile ffmpegmplayer for macosx 搜索 构建 libx265 和here http si
  • 从我的 war 目录提供图像?

    我有一个 servlet 它提供存储在 blob 中的图像文件 如果找不到请求的图像 我想提供一个包含在我的 war 目录中的静态图像 我们如何做到这一点 这就是我从数据存储区提供 blob 图像的方式 public class Servl
  • Highcharts:使用jspdf导出多个图表

    当我尝试使用导出多个 Highcharts 图表时jsPdf我没有以正确的方式获取图表 你能帮我解决这个问题吗 JavaScript 代码 Highcharts chart container title text Solar Employ
  • 在 Java 中断言异常,如何? [复制]

    这个问题在这里已经有答案了 这可能是一个概念上愚蠢的问题 但也可能不是 因为我仍然是一名学生 我想我应该没有问题问 想象一下 您有一个方法 如果给定某些条件 它将抛出 NumberFormatException 我想编写一个单元测试来查看异
  • 为什么 ++[[]][+[]]+[+[]] 返回字符串“10”?

    这是有效的并返回字符串 10 在 JavaScript 中 更多例子在这里 http sla ckers org forum read php 24 33349 33405 console log 为什么 这里发生了什么 如果我们把它分开
  • Powerpoint VBA - 将 RGB 颜色作为变量传递

    我希望允许用户通过文本框输入 RGB 颜色并传递该变量来更改所有形状的颜色 我编写了一个循环 该循环将查看形状名称的最后 2 个字符 以确定是否应将其更改为主要颜色或次要颜色 这是最新的 Office 365 的 Powerpoint 我已
  • Eclipse:获取当前文件的位置?

    如果我在 Eclipse 中打开了一个文件 我怎样才能知道它在文件系统上的位置 例如 在 Vim 中我会使用 pwd 使用 Eclipse 菜单 文件 gt 属性 或快捷方式 Alt Enter 您应该能够看到与资源关联的位置
  • 谁在创建文件“/private/var/tmp/Untitled-*.uicatalog”?

    我正在调查 TeamCity 构建代理磁盘不足的原因 并在其中发现了超过 11 000 个文件 private var tmp 全部按照以下方式命名Untitled
  • cx_Oracle 错误。 DPI-1047:无法找到 64 位 Oracle 客户端库

    我安装了该库 当尝试使用我的凭据访问 jupyter 笔记本中的 SQL 时 出现以下错误 数据库错误 DPI 1047 无法找到 64 位 Oracle 客户端库 找不到指定的模块 请参阅 https oracle github io o
  • 如何将 tf.data.Dataset.padded_batch 与嵌套形状一起使用?

    我正在为每个元素构建一个具有两个形状 batch width height 3 和 batch class 的张量的数据集 为了简单起见 我们假设 class 5 你吃什么形状的dataset padded batch 1000 shape
  • 我可以将 Recharts 轴域最大值设置为低于 dataMax 吗?

    我在用户希望看到以不同比例绘制的相同数据的设置中使用图表 特别是 我需要能够将轴域最大值设置为lower比最大数据值 dataMax e g 我想设置domain 0 10 when dataMax是 20 我还没有找到在 Recharts
  • Google FastButton 在 iOS 上点击两次

    使用时MrMaksimize 和 Alex Blacks 实施 https github com alexblack google fastbutton of 谷歌快捷按钮 https developers google com mobil
  • 用 Expand.grid 替换嵌套循环并使用多个参数调用内部函数

    我想用rollapply具有各种组合的功能width by and FUN参数 width and by应具有相同的值 我受到启发here https stackoverflow com questions 15059076 call ap
  • 使用复选框 s1 和 s2 以及不同功能的交互式堆栈

    我正在尝试制作堆栈的工作模型 其中用户可以选择堆栈 s1 或 s2 并可以执行诸如推送和弹出之类的操作 div p stack p div
  • Android LocationServices.FusedLocationApi 已弃用

    我不明白为什么LocationServices FusedLocationApi requestLocationUpdates mGoogleApiClient mLocationRequest this FusedLocationApi