【问题标题】:Android Wear LocationAndroid Wear 位置
【发布时间】: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


【解决方案1】:

来自开发站点的代码没有问题。

设备刚刚恢复出厂设置,我还没有打开 Google 地图,因此手表无法获取当前位置,因此它没有进入 "onLocationChanged"。

【讨论】:

    【解决方案2】:

    您必须致电connect

    @Override
    protected void onResume() {
        super.onResume();
        googleApiClient.connect();
        ...
    }
    

    【讨论】:

    • 这不是问题。 GoogleApiClient 已连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    相关资源
    最近更新 更多