从网络提供商处获取准确的当前位置

2024-03-19

我使用以下代码从应用程序中的网络提供商获取当前位置:

LocationManager mgr = (LocationManager) getSystemService(LOCATION_SERVICE);
boolean network_enabled = mgr.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if(network_enabled){
Location location = mgr.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

但它给出的位置距离我的实际位置大约300-700米。

这是网络提供商所期望的。但问题是:

仅启用此网络提供商且没有 GPS,我打开了 Foursquare 应用程序,它显示我当前的确切位置。现在 当我回到我的应用程序时,它显示了准确的电流 位置或者说与 Foursquare 显示的位置相同。

同样的情况也发生在 Google 应用程序上,例如导航器、地图等......

如何才能做到这一点?其他应用程序如何仅根据网络提供商获取准确位置?

完整代码:

public class MyLocationActivity extends Activity implements LocationListener {
    private LocationManager mgr;
    private String best;
    Location location;
    public static double myLocationLatitude;
    public static double myLocationLongitude;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mgr = (LocationManager) getSystemService(LOCATION_SERVICE);
        Criteria criteria = new Criteria();
        best = mgr.getBestProvider(criteria, true);
        location = mgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        dumpLocation(location);
    }

    public void onLocationChanged(Location location) {

        dumpLocation(location);
    }

    public void onProviderDisabled(String provider) {
        // TODO Auto-generated method stub

    }

    public void onProviderEnabled(String provider) {
        // TODO Auto-generated method stub

    }

    public void onStatusChanged(String provider, int status, Bundle extras) {
        // TODO Auto-generated method stub

    }

    @Override
    protected void onPause() {

        super.onPause();
        mgr.removeUpdates(this);
    }

    @Override
    protected void onResume() {

        super.onResume();
        mgr.requestLocationUpdates(best, 15000, 10, this);
    }

    private void dumpLocation(Location l) {

        if (l != null){

            myLocationLatitude = l.getLatitude();
            myLocationLongitude = l.getLongitude();
        }
    }
}

谢谢


您得到的只是最后的已知位置。您应该向以下位置请求位置更新LocationManager. Use LocationManager.getLocationUpdates http://developer.android.com/reference/android/location/LocationManager.html.

On your LocationListener http://developer.android.com/reference/android/location/LocationListener.html on the onLocationChanged(Location location)方法,您可以检查Location http://developer.android.com/reference/android/location/Location.html对象,这个位置有多准确,如下所示:

float accuracy=location.getAccuracy();

那么,如果这Location对您来说足够准确,您可以停止接收来自LocationManager using removeUpdates() http://developer.android.com/reference/android/location/LocationManager.html#removeUpdates%28android.location.LocationListener%29,并使用收到的Location。如果Location不够准确,可以等更准确的Location,并停止更新。

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

从网络提供商处获取准确的当前位置 的相关文章

随机推荐

  • Dagger 2.15:AppComponent - 无法处理此接口

    我无法构建我的应用程序 并出现以下错误 Task app kaptDebugKotlin debug AppComponent java 7 error ComponentProcessor MiscError dagger interna
  • 使用转换器从 System.Windows.SystemParameters.PrimaryScreenWidth 进行 WPF 绑定

    我试图将 System Windows SystemParameters PrimaryScreenWidth 绑定到 ColumnDefinition 的 来自 Grid 内 宽度属性 并使用转换器将 PrimaryScreenWidth
  • webpack 包中的导出功能

    我正在使用需要回调的谷歌地图 API 如何从 webpack 包导出回调以供外部脚本 例如 Google Maps API 使用 HTML X d 输出键 div div map js var require jquery function
  • Eclipse:“系统”无法解析

    首先我安装了java 7 0 update 25 然后安装了eclipse 后来根据要求 我卸载了这个java版本并安装了早期版本5 0 现在 在每个 Eclipse 程序中 都会显示 System 一词的错误 解决办法是将java exe
  • UIPageControl - 如何使背景透明?

    我在用UIPageControl并试图使背景透明 UIPageControl pageControl UIPageControl appearance pageControl pageIndicatorTintColor UIColor l
  • CSS 在打印时指定整页宽度?

    我有一个 html 页面 由于打印特定的样式 打印得很好 除了一件事 它不使用页面的整个宽度 换句话说 我希望缩放页面以填充页面 是否可以使用 css 样式获得该结果 实际上你可以 用 pagecss 规则 尽管它可以在浏览器实现之间进行一
  • itextsharp:如果未设置行底部边框,如何显示具有属性 HeaderRows=1 的表格的底线?

    我使用 itextsharp 的最新版本 我使用属性 HeaderRows 1 这样如果有分页符 标题行将再次出现在下一页中 然后我们的内容行具有边框样式 没有底线 如下所示 PdfPCell cell1 null cell1 new Pd
  • 在 Cython 中使用半精度 NumPy 浮点数

    我正在尝试从一些 Cython 代码将 float16 数据发送到 Nvidia P100 卡 当我使用 float32 时 我可以在 Cython 中定义我的类型 如下所示 DTYPE np float32 ctypedef np flo
  • 将 ES7 静态 propTypes 与 React-Native 结合使用

    当我使用 React Native 默认打包程序启动项目时 出现以下错误 Unexpected token在这一行 static propTypes 我查看了 GitHub 上的 React Native issues 但没有找到解决方案
  • mongodb+srv URI 不能有端口号

    我有 注意 用户名和密码是组成的 const CONNECTION URL mongodb srv smith bob email protected cdn cgi l email protection T llyHo cluster0
  • 如何获取 TensorFlow 中估算器的默认会话?

    我创建了一个估算器并使用估算器将其导出到 SavedModel 文件export savedmodel 功能 出于可重复性的原因 我希望能够重新创建估算器 加载 SavedModel 文件中的变量 然后调用evaluate 并得到相同的结果
  • 在启用 SuperTab 的情况下,如何使用 Tab 键在 vim 中缩进?

    我刚刚在 vim 中启用了 SuperTab 如果我尝试缩进空行 SuperTab 会尝试插入字符串 我想 我想要的是让 SuperTab 提供补全功能only如果光标左侧有非空白 我不想使用 Ctrl V 或 Ctrl Q 或其他任何东西
  • 测量 x86-64 中的 TLB 未命中处理成本

    我想估计运行 Linux 的 x86 64 Intel Nehalem 计算机上由于 TLB 未命中而导致的性能开销 我希望通过使用一些性能计数器来获得这个估计 有人知道估计这个的最佳方法是什么吗 谢谢 阿尔卡 如果您可以访问基于 West
  • 我可以限制 php 脚本的最大 CPU 使用率吗?

    我有一些使用大量 cpu 的脚本 是否可以限制允许进程使用的 cpu 量 顺便说一句 我正在 CentOs 5 5 上运行 我帮助一位 PHP 编码员创建了解决类似问题的 PHP 脚本 这些是长时间运行的 PHP 脚本 会产生大量负载 由于
  • 图片可以有多个标签吗?

    例如 当我将新图像推送到存储库时 我希望它有两个标签0 2 and latest 这将允许始终通过使用拉取最新的图像版本latest标签和特定版本使用0 2例如标签 用docker可以吗 有什么解决方法吗 我看到的唯一解决方案是进行两次单独
  • React.js 中的悬停按钮

    我想问如何制作一个按钮 但是当鼠标位于按钮上 悬停 时 新按钮显示在前一个按钮上方 并且它在react js中 thx 这是我的代码的方式 var Category React createClass displayName Categor
  • Apple 关联文件在开发中获取,但在 TestFlight 和 App Store 中未获取

    通用链接在开发中工作得很好 但是一旦我对应用程序进行签名并将其部署到 TestFlight 和 App Store 似乎未获取 apple app site association 因此该应用程序未注册以打开通用链接 1 well know
  • 如何在 Angular 6 中调用多个 API 并订阅?

    在我的应用程序中 调用所有POST请求我已经使用了service 当我得到一个specific code 例如 401 我从服务器调用 API 来获取新令牌 在收到另一个令牌之前 如果有任何其他 API 调用 我会将所有这些请求存储在一个数
  • 元素的 jQuery 标签名称

    我尝试在 jQuery 中获取元素标签名称 我有以下 html div class section h1 New Revision nbsp img alt Lock closed class edit src assets lock cl
  • 从网络提供商处获取准确的当前位置

    我使用以下代码从应用程序中的网络提供商获取当前位置 LocationManager mgr LocationManager getSystemService LOCATION SERVICE boolean network enabled