相关疑难解决方法(0)

获取用户在Android中的位置的好方法

问题:

尽快将用户的当前位置置于阈值内,同时节省电池电量.

为什么问题是一个问题:

首先,android有两个提供商; 网络和GPS.有时网络更好,有时GPS更好.

"更好"是指速度与准确度之比.
如果我几乎可以立即获得位置并且不打开GPS,我愿意牺牲几米精度.

其次,如果您要求更新位置更改,则在当前位置稳定时不会发送任何内容.

谷歌有一个确定"最佳"位置的例子:http://developer.android.com/guide/topics/location/obtaining-user-location.html#BestEstimate
但我认为它不是应该尽可能好的地方/可能.

我有点困惑为什么谷歌没有标准化的位置API,开发者不应该关心位置来自哪里,你应该只指定你想要的东西,手机应该为你选择.

我需要帮助的是:

我需要找到一个很好的方法来确定"最佳"位置,也许是一些启发式或者可能通过某些第三方库.

这并不意味着确定最好的提供商!
我可能会使用所有提供商并选择其中最好的.

应用程序的背景:

该应用程序将以固定间隔收集用户的位置(假设每10分钟左右)并将其发送到服务器.
该应用程序应尽可能节省电池,并且位置应具有X(50-100?)米的精度.

目标是以后能够在地图上绘制白天用户的路径,因此我需要足够的准确性.

其他:

您认为对于期望和接受的准确度的合理价值是什么?
我一直在使用100米接受,并且根据需要使用30米,这要问多少?
我希望以后能够在地图上绘制用户的路径.
期望100米,接受500米更好吗?

此外,现在我每次更新GPS的时间最长为60秒,如果你在室内的准确度可能超过200米,这个位置太短了吗?


这是我目前的代码,感谢任何反馈(除了缺少错误检查,这是TODO):

protected void runTask() {
    final LocationManager locationManager = (LocationManager) context
            .getSystemService(Context.LOCATION_SERVICE);
    updateBestLocation(locationManager
            .getLastKnownLocation(LocationManager.GPS_PROVIDER));
    updateBestLocation(locationManager
            .getLastKnownLocation(LocationManager.NETWORK_PROVIDER));
    if (getLocationQuality(bestLocation) != LocationQuality.GOOD) {
        Looper.prepare();
        setLooper(Looper.myLooper());
        // Define a listener that responds to location updates
        LocationListener locationListener = new LocationListener() {

            public void onLocationChanged(Location location) {
                updateBestLocation(location);
                if (getLocationQuality(bestLocation) != LocationQuality.GOOD)
                    return;
                // We're done …
Run Code Online (Sandbox Code Playgroud)

android geolocation android-location

210
推荐指数
5
解决办法
14万
查看次数

Android播放服务6.5:缺少LocationClient

更新到Google Play Services 6.5.87后,由于缺少LocationCLient类,我的应用程序无法编译.

文档链接 是在瞬间损坏(404未找到)

我该如何解决?我想收到位置更新,使用地理围栏等.

android location google-play-services android-geofence fusedlocationproviderapi

45
推荐指数
1
解决办法
1万
查看次数

在没有互联网的情况下以编程方式更快地获得GPS协调,但使用网络提供商和移动GPS

我在这个主题上提到了很多问题,但似乎缺少一些我的要求:

  1. 我希望~0.0001准确地获得GPS位置
  2. 不想使用互联网; 虽然GSM/CDMA网络还可以
  3. 应用程序启动时应以编程方式获取
  4. 应该更快,比如在一分钟之内(比如iPhone,也可能在飞行模式下工作!)
  5. 代码应该适用于大多数设备
  6. 手机可以随时开启/关闭并随时移动

有没有什么办法让刚刚的坐标与上述要求?任何示例代码段都将非常感谢.

检查各种应用程序,例如"找我","Maverick",声称显示离线位置.但在没有互联网的各种情况下,他们不会跟踪位置(在印度).
我在SO内外提到了很多旧/新问题.以下几点:

[注意:我代表我的Android团队提出这个问题,如果被要求,我们很乐意澄清细节.如果你觉得这篇文章属于Android.Stackexchange,那么请移动它.]

gps android geolocation android-location

22
推荐指数
3
解决办法
3666
查看次数