2016-11-21 4 views
2

Я делаю Android Wear Watch Face, и мне нужно показать текущее местоположение пользователя.Android Wear Location

Я следил за учебником по Dev site, но я не могу заставить его работать. Код никогда не переходит в «onLocationChanged» прослушиватель.

Устройство - часы Huawei, и оно подключено к мобильному телефону с 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()); 
    } 
}; 
+0

Можете ли вы опубликовать весь код из своей деятельности? – Sid

+2

После нескольких часов проверки, перепроверки и поиска решений я попытался открыть Карты Google на часах, чтобы увидеть, работает ли местоположение вообще. И когда оно началось, мое приложение тоже начало работать. После перезагрузки, я вообще не открывал Карты Google. Это немного неудобно, но я думаю, это работает. Я попытаюсь снова вернуть его к заводским настройкам и посмотреть, что произойдет. – filipst

ответ

1

Код с сайта Dev не был проблемой.

Прибор был сбросить свежий завод, и я не открывал Google Maps еще так смотреть не мог получить текущее местоположение и из-за того, что он не пошел в «onLocationChanged».

0

Вы должны позвонить connect.

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

Это не проблема. GoogleApiClient подключен. – filipst