我正在尝试编写磨损应用程序。我看到如果手机没有通过Android Wear应用程序与手表同步(尽管手机与手机中的Android磨损应用程序断开后手表已连接wifi),地图应用程序无法获取当前位置。
LocationServices.FusedLocationApi .requestLocationUpdates(mGoogleApiClient,locationRequest,这一点);
LocationServices.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,this);
但上面的代码与移动应用程序完美配合。
我正在使用LG Urbane第二版。
任何人都可以帮我解决这个问题.LG Urbane第二版说它有GPS然后为什么我不能在没有同步电话的情况下获取位置细节。
更新:
我在以下网站上发现Android服装使用手机上的GPS提供商来获取位置更新。只有Sony Smartwatch 3可以直接从手表获取位置更新。还是一样吗?
http://android-developers.blogspot.com.au/2014/10/gps-on-android-wear-devices.html
答案 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());
}
}
});