从Android Wear LG Urbane第二版中获取位置

时间:2016-09-29 09:52:32

标签: wear-os

我正在尝试编写磨损应用程序。我看到如果手机没有通过Android Wear应用程序与手表同步(尽管手机与手机中的Android磨损应用程序断开后手表已连接wifi),地图应用程序无法获取当前位置。

  1. 在两种方式中作为独立应用程序尝试时,不会获取LocationUpdates。下面是代码。
  2. LocationServices.FusedLocationApi                         .requestLocationUpdates(mGoogleApiClient,locationRequest,这一点);

                LocationServices.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,this);
    

    但上面的代码与移动应用程序完美配合。

    我正在使用LG Urbane第二版。

    任何人都可以帮我解决这个问题.LG Urbane第二版说它有GPS然后为什么我不能在没有同步电话的情况下获取位置细节。

    更新:

    我在以下网站上发现Android服装使用手机上的GPS提供商来获取位置更新。只有Sony Smartwatch 3可以直接从手表获取位置更新。还是一样吗?

    http://www.computerworld.com/article/2919013/android/android-wear-on-wi-fi-using-a-smartwatch-without-a-phone-nearby.html

    http://android-developers.blogspot.com.au/2014/10/gps-on-android-wear-devices.html

2 个答案:

答案 0 :(得分:0)

你确定手表正在接收GPS信号吗?使用应用程序对其进行测试,或者使用某些手表来测试开发选项中的gps,例如sw3。

答案 1 :(得分:0)

更新:LG Urbane第二版似乎确实有GPS,即使它没有在official site中列出。忽略该页面上的评论,声称它没有。

如果船上有一个GPS芯片,则会使用GPS芯片。这不仅仅是索尼设备的情况。

关于FusedLocationProvider,如果你在Wear应用程序上运行它,它会尝试从手机获取位置b / c它更好用电池等。

如果Wear设备与手机断开连接,则会切换到手表上的GPS(如果有)。重要的是,当只穿戴Wear设备时,GPS在内部无法工作,因此您可能需要到户外。此外,首次在Wear设备上使用GPS时,可能需要一些时间来获取/更新卫星位置。

如果不是,它只会在您连接到手机时返回最后一个已知的纬度/经度位置。

与我们在代码段中看到的相比,FusedLocationProvider涉及的代码要多得多。

如果您想使用位置查看完全正常工作的Wear应用程序(无论是否已连接),请查看GitHub上的Google示例:SpeedTracker

具体来说,请查看WearableMainActivity.java课程。如果您已正确连接到GoogleApiClient并且您具有适当的位置运行时权限,则此代码应该有效(来自SpeedTracker):

LocationRequest locationRequest = LocationRequest.create()
        .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
        .setInterval(UPDATE_INTERVAL_MS)
        .setFastestInterval(FASTEST_INTERVAL_MS);

LocationServices.FusedLocationApi
        .requestLocationUpdates(mGoogleApiClient, locationRequest, this)
        .setResultCallback(new ResultCallback<Status>() {

            @Override
            public void onResult(Status status) {
                if (status.getStatus().isSuccess()) {
                    if (Log.isLoggable(TAG, Log.DEBUG)) {
                        Log.d(TAG, "Successfully requested location updates");
                    }
                } else {
                    Log.e(TAG,
                            "Failed in requesting location updates, "
                                    + "status code: "
                                    + status.getStatusCode() + ", message: " + status
                                    .getStatusMessage());
                }
            }
        });