# Wear OS
В принципе тот же андроид, только с немного урезанным функционалом (список отрезанных SDK легко гуглится). Но на нашем уровне разницы практически не заметно.
## Настройка
1. Установите эмулятор для часов (**будьте внимательны, не установите китайскую версию**)




2. Создайте проект:

## Проект "база"
Для часов корневым элементом разметки является **BoxInsetLayout** (начиная со 2-й версии).
Внутри него расположен **FrameLayout** (это запоминать не нужно - приложение сразу таким и создаётся).
Свою разметку вы уже располагаете внутри **FrameLayout**
На **FutureSkills 2019** было задание залогиниться на часах и показать какую-то информацию с сервера. Реализуем это на нашем API:
1. Заставку пропущу, но тут вы и сами должны справиться
2. Экран авторизации (поля ввода и кнопки Login/Logout) рисуем прямо на экране **activity** (тут нет смысла в диалоге, экран слишком мелкий)
Тут тоже сделайте сами. Отмечу только, что **activity** создается в меню ***New -> Wear -> Blank activity***
3. HTTP-запросы тоже рабтают как обычно - реализуйте login/logout по аналогии с прошлым заданием.
4. В **КОД**-е было что-то написано про обсуждение фильмов. То-ли форум, то-ли чат... Сделаем чат:
API я доработал:
```
### отправка сообщения в чат
POST {{url}}/chat
Content-Type: application/json
Token: {{token}}
{"message":"test"}
### получение сообщений
GET {{url}}/chat
Token: {{token}}
```
Для отображения списка есть свой элемент - **androidx.wear.widget.WearableRecyclerView** (позволяет прокручивать список механическим колесиком на часах и доскроливать крайние элементы до середины экрана, что очень удобно на круглых интерфейсах).
```kt
wrc = findViewById(R.id.wrc)
// wrc.setHasFixedSize(true)
// этот параметр позволяет прокручивать
// крайние элементы списка на середину экрана
// (иначе на круглых часах можно не разглядеть содержимое)
wrc.isEdgeItemsCenteringEnabled = true
// менеждер тоже свой
wrc.layoutManager = WearableLinearLayoutManager(this)
// адаптер не отличается
wrc.adapter = MyAdapter(chatList)
```
Для периодического обновления сообщений в чате получение списка заверните в таймер:
```kt
timer(period = 5000L, startAt = Date()){
// тут вызвать GET /chat
}
```
Должно получиться что-то подобное (слева входящие сообщения с отправителем, справа ваши)

Соответственно нужно добавить на экран EditText и кнопку отправить (в одной строке)
>Google не рекомендует пользоваться HTTP-запросами в приложении часов.
В носимой электронике большую роль играет энергоэффективность. А активное интернет-соединение будет быстро сажать батарею, и могут регулярно происходить разрывы связи. Ещё носимые устройства предполагают активную синхронизацию, которую тоже нужно реализовывать.
Все эти проблемы за нас любезно решает механизм обмена данными в Google Services под названием **«Data Layer»**.
>
>**Data Layer** помогает синхронизировать данные между всеми носимыми устройствами, привязанными к одному Google аккаунта пользователя. Он выбирает наиболее оптимальный маршрут для обмена данными (bluetooth, network) и реализует стабильную передачу. Это гарантирует, что сообщение дойдет до нужного девайса.
>
>
---
## Задание
Разработать приложение для **Wear OS** c несколькими экранами:
* заставка
* авторизация
* чат (приём и отправка сообщений)