同步获取 Android 上最后一个已知位置

2024-04-04

在 Android 上使用 LocationClient (v2 API) 获取最后已知位置的“正确”方法是什么?同步 manner?


UPDATE

这是我想出的最好的方法(它不是同步的,但它克服了处理问题的负担connect() and onConnected()每次需要最后一个已知位置时):

public enum SystemServicesNew implements GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener {

    INSTANCE;

    private LocationClient mLocationClient;
    private Location mLastKnownLocation;

    static {
        INSTANCE.mLocationClient = new LocationClient(MyApp.getAppContext(), INSTANCE, INSTANCE);
        INSTANCE.mLastKnownLocation = new Location("");
        INSTANCE.mLastKnownLocation.setLatitude(0);
        INSTANCE.mLastKnownLocation.setLongitude(0);
        INSTANCE.getLastKnownLocation(); // fire it already so subsequent calls get the real location
    }

    public Location getLastKnownLocation()
    {
        if(!mLocationClient.isConnected()) {
            mLocationClient.connect();
            return mLastKnownLocation;
        }
        mLastKnownLocation = mLocationClient.getLastLocation();
        return mLastKnownLocation;
    }

    @Override
    public void onConnected(Bundle bundle) {
        Toast.makeText(MyApp.getAppContext(), "LocationClient:Connected", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onDisconnected() {
        Toast.makeText(MyApp.getAppContext(), "LocationClient:Disconnected", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) {
        Toast.makeText(MyApp.getAppContext(), connectionResult.toString(), Toast.LENGTH_SHORT).show();
    }
}

我的 Java 技能...不太发达...有什么改进建议吗?


执行此操作的合法方法是使用 LocationClient 的

获取最后位置()

如果您想以同步方式执行此操作,请记住,它不会是一个精确的位置,在极少数情况下,它甚至可能不可用。检查以下文档:

public Location getLastLocation ()

返回当前可用的最佳最新位置。

如果某个位置不可用(这种情况很少发生),则将返回 null。将返回在尊重位置权限的同时可用的最佳准确度。

此方法提供了一种获取位置的简化方法。它特别适合不需要准确位置并且不想维护位置更新的额外逻辑的应用程序。

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

同步获取 Android 上最后一个已知位置 的相关文章

随机推荐

  • 将一个 Cursor 的内容添加到另一个 Cursor

    我想连接两个游标 以便连接后第二个游标的内容也应出现在第一个游标中 这正是我的代码 public final Uri AllImage URI Int MediaStore Images Media INTERNAL CONTENT URI
  • 如何在 VueJS 单文件组件中正确使用“作用域”样式?

    The docs https vue loader vuejs org en features scoped css html在 VueJS 上声明scoped应限制组件的样式 但是如果我创建两个相同的组件baz样式 它会从一个组件泄漏到另
  • Cocoa:隐藏一个应用程序

    是否可以使用 cocoa 隐藏一个特定的应用程序 我知道您可以使用以下代码隐藏所有其他应用程序 NSWorkspace sharedWorkspace performSelectorOnMainThread selector hideOth
  • php 的 sleep() 输出

    我试图基本上每秒运行一个循环 持续 25 秒 for i 0 i lt 25 i 1 echo i sleep 1 问题是它在完全完成之前不会输出 所以在循环继续 25 次之后 有没有办法做到这一点 以便它会在每次睡眠前输出 而不是等到整个
  • 随机但仅在 Chrome 中

    我有这个函数来创建随机的数字范围 function randomRange min max return new Array max min join split map function v i return min i sort fun
  • 返回点击按钮的索引?

    我有一个包含 30 个按钮的数组 我有一个变量按钮Clicked 当我按下按钮时 如何获取索引并将索引号存储在单击的按钮中 谢谢 JButton buttons new JButton 30 for int i 1 i lt 30 i in
  • VueJS 换行符未正确渲染

    我遇到以下问题 我从包含换行符的 API 读取数据字符串 n我想在我的模板中正确显示它们 但是当我做类似的事情时 p mytext p 文本显示为 n其中的字符就像普通文本一样 响应中的文本字符串的格式为 Hello n what s up
  • 迭代多个数组的最佳方法?

    在 Ruby 中迭代多个数组的最佳 美观且高效 方法是什么 假设我们有一个数组 a x y z b a b c 我想要这个 x a y b z c Thanks 另一种方法是使用each with index 快速基准测试表明 这比使用 z
  • PHP SREG 中的 JanRain OpenID?

    我使用我发现的名为 open id 选择器的修改后的登录设置了演示 登录工作正常并且身份 url 返回 但我要求的 SREG 数据从未填充 必需或可选 我正在使用 Gmail 帐户登录我的页面 这是我编辑的 try auth php 中的代
  • 对 SolrConfig.xml 文件的更新未得到反映

    我在 SolrConfig xml 文件中添加了一个新的请求处理程序 但是每当我尝试使用新的处理程序时 我都会收到带有 未知处理程序 错误的 404 修改SolrConfig xml文件时是否还需要修改其他文件 Thanks 您需要重新启动
  • DatagramSocket.send 线程安全吗?

    我打算使用一个实例DatagramSocket并称其为send http docs oracle com javase 7 docs api java net DatagramSocket html send 28java net Data
  • 绘制 3D 线,matlab

    我的问题非常标准 但找不到解决方案 我有点 x y z 并想绘制最佳拟合线 我正在使用下面给出的函数 和 Thanx Smith LS3DLINE M Least squares line in 3 dimensions Version 1
  • 基于 Symfony 2 的项目的安全性和登录

    我正在开发一个基于 Symfony 2 PHP 框架的 Web 应用程序 它有一个供注册用户使用的登录页面 我想为每个登录系统的用户执行一些自定义逻辑 基本上 我想在任何用户登录系统时进行记录 但我不想在主页的控制器上执行此操作 因为每次用
  • Mac OS X 10.6.7 Java 路径当前 JDK 令人困惑

    我无法理解 Mac OSX 上的多个 java 版本 实际路径与链接 通常在 Windows 中 如果我的机器上安装了多个版本 我可以选择我想要的版本的路径并使用它 但在 MAC OS X 中 我知道有一个叫做链接的东西被指向 Curren
  • .net 4.6框架已就地升级那么.net框架4.5在vs2015中如何工作?

    net 4 6框架已就地升级那么 net框架4 5在vs2015中如何工作 我只看到一个文件夹 v4 0 30319 dll 是如何存储的以及在哪里 NET Framework 4 5 是 4 0 的就地升级 4 5 1 是 4 5 的替代
  • 我可以在 Citrus 静态响应适配器负载中使用 Citrus 变量吗?

    我正在使用静态响应端点适配器返回从资源文件获取的模拟服务响应 private void setAdapterResponse StaticResponseEndpointAdapter adapter String response thr
  • 在 Python、MATLAB 等中使用 eval [重复]

    这个问题在这里已经有答案了 我确实知道不应该使用eval 出于所有显而易见的原因 性能 可维护性等 我的问题更多的是 它有合法用途吗 人们应该使用它而不是以另一种方式实现代码 由于它是用多种语言实现的 并且可能导致糟糕的编程风格 我认为它仍
  • 如何在 ggplot2 图例中使用下标 [R]

    我可以在 ggplot2 图例中使用下标吗 我懂了这个问题 https stackoverflow com questions 5293715 how to use greek symbols in ggplot2关于传说和其他地方的希腊字
  • wifi getLinkSpeed() 始终返回一个值

    我正在开发一个显示互联网速度的应用程序 喜欢 https play google com store apps details id netspeed pt https play google com store apps details
  • 同步获取 Android 上最后一个已知位置

    在 Android 上使用 LocationClient v2 API 获取最后已知位置的 正确 方法是什么 同步 manner UPDATE 这是我想出的最好的方法 它不是同步的 但它克服了处理问题的负担connect and onCon