Предыдущая лекция |   | Следующая лекция :----------------:|:----------:|:----------------: [Проект "каршеринг" Часть 3. Работа с Яндекс картами](./map_yandex.md) | [Содержание](../readme.md#практика-разработка-мобильных-приложений) | [Android TV](./android_tv.md) # Wear OS В принципе тот же андроид, только с немного урезанным функционалом (список отрезанных SDK легко гуглится). Но на нашем уровне разницы практически не заметно. ## Настройка 1. Установите эмулятор для часов (**будьте внимательны, не установите китайскую версию**) ![](/img/as048.png) ![](/img/as049.png) ![](/img/as050.png) ![](/img/as051.png) 2. Создайте проект: ![](/img/as052.png) ## Продолжение проекта "каршеринг" Для часов корневым элементом разметки является **BoxInsetLayout** (начиная со 2-й версии). Внутри него расположен **FrameLayout** (это запоминать не нужно - приложение сразу таким и создаётся). Свою разметку вы уже располагаете внутри **FrameLayout** На **FutureSkills 2019** было задание залогиниться на часах и показать какую-то информацию с сервера. Реализуем это на нашем API: 1. Заставку пропущу, но тут вы и сами должны справиться 2. Экран авторизации (поля ввода и кнопки Login/Logout) рисуем прямо на экране **activity** Тут тоже сделайте сами. Отмечу только, что **activity** создается в меню ***New -> Wear -> Blank activity*** 3. HTTP-запросы тоже рабтают как обычно - реализуйте login/logout по аналогии с прошлым заданием. 4. Научимся выводить список (на примере автомобилей): Для запроса списка автомобилей используется метод `GET /cars` Для отображения списка есть свой элемент - **androidx.wear.widget.WearableRecyclerView** (позволяет прокручивать список механическим колесиком на часах и доскроливать крайние элементы до середины экрана, что очень удобно на круглых интерфейсах). ```kt wrc = findViewById(R.id.wrc) // wrc.setHasFixedSize(true) // этот параметр позволяет прокручивать // крайние элементы списка на середину экрана // (иначе на круглых часах можно не разглядеть содержимое) wrc.isEdgeItemsCenteringEnabled = true // менеждер тоже свой wrc.layoutManager = WearableLinearLayoutManager(this) // адаптер не отличается wrc.adapter = MyAdapter(chatList) ``` >Google не рекомендует пользоваться HTTP-запросами в приложении часов. В носимой электронике большую роль играет энергоэффективность. А активное интернет-соединение будет быстро сажать батарею, и могут регулярно происходить разрывы связи. Ещё носимые устройства предполагают активную синхронизацию, которую тоже нужно реализовывать. Все эти проблемы за нас любезно решает механизм обмена данными в Google Services под названием **«Data Layer»**. > >**Data Layer** помогает синхронизировать данные между всеми носимыми устройствами, привязанными к одному Google аккаунта пользователя. Он выбирает наиболее оптимальный маршрут для обмена данными (bluetooth, network) и реализует стабильную передачу. Это гарантирует, что сообщение дойдет до нужного девайса. > >![](../img/04037.png) --- ## Задание Разработать приложение для **Wear OS** c несколькими экранами: * заставка (отдельной активностью) * авторизация * список автомобилей (обязательно отобразить фотографию) Предыдущая лекция |   | Следующая лекция :----------------:|:----------:|:----------------: [Проект "каршеринг" Часть 3. Работа с Яндекс картами](./map_yandex.md) | [Содержание](../readme.md#практика-разработка-мобильных-приложений) | [Android TV](./android_tv.md)