【发布时间】:2017-04-04 17:20:02
【问题描述】:
我正在制作一个 Android Wear 表盘,我需要向用户显示当前位置。
我在Dev site 上关注了教程,但我无法让它工作。代码永远不会转到 "onLocationChanged" 侦听器。
设备为华为手表,连接手机,开启WiFi和定位。
权限已开启(我有运行时权限请求)。代码如下:
AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
build.gradle (Module.wear)
compile 'com.google.android.gms:play-services-location:8.4.0'
AnalogFaceService.java
googleApiClient = new GoogleApiClient.Builder(AnalogFaceService.this)
.addApi(LocationServices.API)
.addApi(Wearable.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this).build();
@Override
public void onConnected(@Nullable Bundle bundle)
{
LocationRequest locationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY)
.setInterval(TimeUnit.SECONDS.toMillis(2))
.setFastestInterval(TimeUnit.SECONDS.toMillis(2))
.setSmallestDisplacement(2);
if
(
(
ActivityCompat.checkSelfPermission(AnalogFaceService.this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
) && (
ActivityCompat.checkSelfPermission(AnalogFaceService.this, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
)
) {
return;
}
LocationServices.FusedLocationApi
.requestLocationUpdates(googleApiClient, locationRequest, onLocationChangedListener)
.setResultCallback(locationCallback);
}
private final LocationListener onLocationChangedListener = new LocationListener()
{
@Override
public void onLocationChanged(Location location)
{
Log.v("LOCATION_TEST", location.getLatitude() + " :::: " + location.getLongitude());
getSunriseAndSunset(location);
addLocationEntry(location.getLatitude(), location.getLongitude());
}
};
【问题讨论】:
-
你能贴出你活动中的所有代码吗?
-
经过数小时的检查、重新检查和解决方案搜索后,我尝试在手表上打开谷歌地图,看看位置是否正常工作。当它开始时,我的应用程序也开始工作了。恢复出厂设置后,我根本没有打开谷歌地图。这有点尴尬,但我想它有效。我将尝试再次将其恢复为出厂设置,看看会发生什么。
标签: java android location wear-os