#wear-os
#wear-ос
Вопрос:
Я пытаюсь написать приложение wear. Я вижу, что если телефон не синхронизирован с watch через приложение Android Wear (даже если часы подключены к Wi-Fi После отключения от приложения Android wear в телефоне), приложение Maps не определяет текущее местоположение.
- Обновления местоположения НЕ извлекаются при попытке использования в качестве отдельного приложения в обоих вариантах. Ниже приведен код.
Службы определения местоположения.FusedLocationApi .requestLocationUpdates(mgoogleap-клиент, LocationRequest, это);
LocationServices.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,this);
Но приведенный выше код отлично работает с мобильным приложением.
Я использую LG Urbane 2nd edition.
Кто-нибудь, пожалуйста, помогите мне с этим .. LG Urbane 2nd edition говорит, что у него есть GPS, тогда почему я не могу получить данные о местоположении, если ОНИ НЕ синхронизированы с телефоном.
Обновить:
На следующих сайтах я обнаружил, что Android wear использует поставщика GPS с телефона для получения обновлений местоположения. Только умные часы Sony 3 могут получать обновления местоположения непосредственно из watch. Это все то же самое?
http://android-developers.blogspot.com.au/2014/10/gps-on-android-wear-devices.html
Ответ №1:
Обновление: в LG Urbane 2nd edition, похоже, есть GPS, хотя он не указан на их официальном сайте. Также игнорируйте комментарии на этой странице, которые утверждают, что это не так.
Wear будет использовать GPS-чип, если он есть на борту. Это касается не только устройства Sony.
Что касается FusedLocationProvider, если вы запустите его в приложении Wear, он попытается получить местоположение с телефона, потому что, помимо прочего, он лучше работает от батареи.
Если устройство Wear отключается от телефона, оно переключается на GPS на часах (если он есть). Важно, GPS не работает внутри, когда используется только на устройстве Wear, поэтому вам может потребоваться выйти на улицу. Кроме того, может потребоваться некоторое время для получения / обновления местоположения спутников при первом использовании GPS на устройстве Wear.
Если это не так, он просто возвращает последнюю известную позицию широты / длины, когда вы были подключены к телефону.
В FusedLocationProvider задействовано немного больше кода, чем мы видим в вашем фрагменте.
Если вы хотите увидеть полностью работающее приложение Wear, использующее местоположение (как при подключении, так и без него), взгляните на образец Google на GitHub: 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());
}
}
});
Комментарии:
1. Часы LG Urbane 2nd Edition оснащены встроенным GPS. Поскольку я тестирую внутри здания, я не смог получить информацию о местоположении. Я вынес часы на улицу, где есть сигнал GPS, я смог получить текущую широту и долготу местоположения без телефона. Спасибо
2. О, я должен был упомянуть, что GPS не работает внутри. Я видел это с Sony watch. Круто, я рад, что у вас это получилось. Я пересмотрю свой ответ, чтобы помочь другим.
Ответ №2:
Вы уверены, что часы получают сигнал GPS? Используйте приложение, чтобы протестировать его, или некоторые часы, которые вы можете протестировать с помощью gps в настройках разработчика, например sw3.