问题标签 [location-provider]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2586 浏览

java - 在 Android 中扩展抽象类:一个 LocationProvider

这可能是一个简单/愚蠢的问题。我找不到任何关于它的文档。我想在Android中创建自己的LocationProviderLocationProvider是一个抽象类,没有构造函数。

Eclipse在这里给了我错误:“隐式超级构造函数 LocationProvider() 不可见。必须显式调用另一个构造函数

但当然,空的超级构造函数是不可见的——LocationProvider没有构造函数。我应该如何创建没有构造函数的抽象类的子类?

例如,这会引发相同的错误:

我无法修改 Android 的 LocationProvider,因此无法创建公开的构造函数。这只是一个本质上不可子分类的类吗?android 只是不希望我们创建 LocationProviders 吗?其他 LocationProviders 是如何完成的?谁能提供一个例子?

0 投票
3 回答
2921 浏览

android - android LocationListener 没有停止 GPS 的使用

在我的service中,在某些情况下,我无法阻止 GPS 搜索和耗尽设备电池。

LocationListenerAgent.java

当我在破坏应用程序的主要活动上按“返回”时,从我的应用程序的某些地方,这被称为:

也许我的super.On生命周期方法需要在该方法的代码之前。

我还需要做什么才能停止 GPS ???我见过其他人对此有疑问,答案似乎并不那么绝对。

在我的应用程序的其他情况下,GPS 确实停止了。

0 投票
0 回答
309 浏览

android - 网络提供商停止提供更新

我注意到很少(每隔几天),我的应用程序停止接收新的位置更新。

位置侦听器已向网络和 GPS 提供商注册。GPS 提供商已关闭,因此任何位置更新都来自网络提供商。每隔几天左右,我就会注意到这个位置很旧而且没有更新。从我的调试日志中,我可以看到位置侦听器正在向位置管理器注册,但没有找到新位置。onLocationChanged() 没有被调用。

奇怪的是,谷歌地图获取新的网络位置没有问题。在应用程序上重新启动/重新安装/清除数据并不能解决问题。唯一能解决的就是重启手机。

这发生在 3 个不同的设备上(2 个 ICS,1 个 JB)。

类似的问题,但在这里措辞不是很好。

0 投票
1 回答
906 浏览

android - Android Map API 2.0 - myLocation 更改的回调?

我认为实际上不使用 LocationProvider 是不可能的,但我想我会看看是否有人有任何想法。

基本上我有一个应用程序,它有一个 PageView w/一个片段,其中包含一个新的 MapView 2.0

我可以通过 getMyLocation 从 GoogleMap 对象轻松提取我的位置。

我过去遇到过问题;在某些设备上,同时使用 NetworkLocation 和 GpsLocation 提供程序。因为我可以从 GoogleMap 中提取我的位置,所以我有一种简单的方法来检查我的位置。

我唯一的问题是我可以通过处理 onCameraChanged 来观察地图平移以更新地图,但它不处理地图内的位置变化。

我当前的实现是我有一个 MapView 和 LocationProvider.. 位置提供程序在服务中,并设置为根据用户确定的时间(1、5、10、15、30、60 秒)进行更新。活动通过 AIDL 连接到服务,如果连接的活动 >0,则启用 locationProvider,如果没有,则关闭。不过,这对谷歌地图确实没什么影响,如果我们不处理与谷歌地图相同的 GPS 信号丢失,我们得到的位置与谷歌地图不同。

我的 3 个选项中的第一个:获取提供者,并将其传递给我可以在位置更改时获得回调的地方(并不是真的想这样做)。这将涉及通过 LocationSource..

第二个选项获取我在当前服务中使用的当前位置提供程序,每次更新时,只需从地图中获取位置。我想这会起作用,但似乎有点多余,并且在屏幕关闭等时仍然存在管理 LocationProviders 的问题。(不必使用谷歌地图)

另一种选择是提供一个服务,该服务将接口传递给可以查询当前位置的地图对象。并且每隔 x 秒执行一次用户指示。我可以为此重用大部分服务,只需要设置它以继续调用。

我在想的另一件事可能只是使用被动提供程序来更新当前位置,而不是使用当前的 MapView。

我唯一的其他考虑是欺骗:我想尝试防止位置欺骗。我可以做到,所以我们不允许模拟位置。但这并不意味着它仍然不能被欺骗。

所以......任何想法将不胜感激。谢谢。

0 投票
1 回答
1544 浏览

android - 如何从 GPS 提供商而不是网络提供商访问位置?

我正在尝试从最好的提供商那里获得位置。我已启用GPS。另外,当我打印纬度和经度时,我是从网络提供商那里得到的。

我的问题是:

如果启用了 GPS,那么我想通过 GPS 搜索 30 秒的位置。之后,如果我的精度低于 200 米,那么我就使用它。如果精度超过 200 米,我会再次搜索并从网络提供商处开始。

之后,我比较了两者的准确性并获取了更准确的提供者的数据。

这是我的代码:

LocationUtil.java

CaptureMain.java

在清单中添加了权限:

0 投票
1 回答
1267 浏览

android - Android 位置管理器每次返回相同的 GPS 坐标

我正在创建一个应用程序来将手机位置发送到我的服务器。我遇到的问题是,每次我启动应用程序时,手机都会给我完全相同的 gps 坐标。当我重新启动它时,坐标可能会改变,但是在发送第一个坐标后,它会发送一次相同的坐标,直到重新启动应用程序。

代码:

每个日志猫帖子的纬度和经度都相同,时间(自 1980 年左右以来的毫秒)也是相同的。

似乎我的应用程序获得了一次位置,并且没有尝试再次获得该位置。

0 投票
1 回答
1497 浏览

android - 如何阻止用户等待很长时间才能获得位置修复?

我正在构建一个 GPS Android 应用程序,它根据用户的当前位置获取最近的位置。

这就是我的应用程序所做的:

  • 检查 GPS 或网络是否可用
  • 如果两者都不可用,则不要做任何事情。否则,我们首先检查 GPS 是否存在,如果没有,则检查网络。
  • 使用其中之一后,我们获取当前位置,然后将其发送到服务器。
  • 一旦我们从服务器检索数据并更新 UI,我们就会停止监听进一步的位置更新。一次就足够了,直到他们按下重新启动的刷新按钮。

我希望做什么:

  • 如果 GPS 或网络未能检索到位置,例如 2 分钟,那么我们会切换提供商。我们不希望用户等待太久。

  • 能够同时使用这两个提供程序并从中获得最准确的信息也很好。我查看了http://developer.android.com/guide/topics/location/strategies.html并看到了 isBetterLocation 方法。我将如何将此方法集成到我的应用程序中?我无法理解应该如何、在何处以及何时调用它。我假设 isBetterLocation() 要求我同时调用网络和 GPS。对于我的应用程序来说,听听两者的准确性会很好。我该怎么做呢?如果其中一个不可用怎么办?

这是我的部分代码:

这就是onLocationChanged方法。我得到 lat/lng 值,然后将它们发送到我的服务器,然后用它做适当的事情。

0 投票
4 回答
1343 浏览

android - 安卓。如何知道检测到的位置是来自 GPS 还是网络提供商

我正在尝试实现一个应用程序,它可以从 GPS 和网络提供商处感知位置并将其显示在 Google 地图上。我成功地做到了,但我有一个问题:我在我的 Activity 的 onCreate() 中获取了提供者(它扩展了 LocationListener)

它工作正常,我的问题是,当调用 onLocationChange() 时,如果调用它的提供者是 GPS 或 NETWORK,我应该采取不同的行动。有没有办法知道哪个?为了更清楚:

何时onLocationChanged(Location location)被调用,是否有机会知道是哪个提供者进行了调用?我尝试if在提供程序字符串上使用 an ,但它似乎不起作用。

0 投票
1 回答
594 浏览

blackberry - 更新连续 GPS 位置的间隔值

我正在开发一个应该以固定间隔更新位置的 BlackBerry 应用程序。可以从滑块选择/更改间隔值。它在 1 分钟、2 分钟、5 分钟、30 分钟等之间变化。在第一次加载(启动应用程序)时,定位间隔为 30 秒。之后,我将滑块值存储在持久存储中,并根据设置的间隔相应地更新位置。运行更新位置的后台线程如下:

除此之外,还有一个可用的“刷新”按钮,一旦单击该按钮将立即开始获取位置更新。这个按钮调用一个方法是另一个类来获取位置。方法如下:

我面临的问题:

1)区间值不变。我通过从持久存储中选择值来实现更改:

这永远不会为空,因为导航到此页面会插入一个 30 分钟的值。

2)单击“刷新”按钮后,后台线程似乎被取消了。它不再以任何间隔值运行。

我读到只创建了一个位置提供程序的实例,并且在获取位置后使用“刷新”将其取消,因此后台线程停止。这是真的?如果是,我怎样才能达到我想要的结果。

编辑: gpsInterval 值读取如下:

0 投票
3 回答
2872 浏览

android - 安卓GPS校准

当移动很远的距离时,比如去另一个城市,在 GPS 关闭的情况下,打开 GPS 需要很长时间才能获得第一个正确的点。

因此,例如,如果我注册到 gps 提供商,则可能需要长达 10 分钟才能完成第一次 onLocationChanged 调用。

网络提供商的响应速度更快,但准确性较低。

有没有办法帮助gps提供商?给它一个大概的位置(来自网络提供商的那个),以便它可以更快地找到我的位置?

我认为谷歌地图做了某种优化,因为他们的应用程序比我的基本应用程序更快地找到我的位置,只注册到 gps 提供商。

知道如何以不错的精度(<30 m)加速获取我的位置的过程吗?