2015-04-13 7 views
1

Я ударяю голову в течение нескольких дней, и я могу понять любую информацию, которую я нашел. Я разрабатываю игровое зеркало для Android Wear. У меня есть 2 класса - 1 сервис для лица часов и один класс, который расширяет WearableListenerService для извлечения аккумулятора телефона.Обнаруживать форму экрана часового пояса при создании часового пояса

Я пытаюсь определить форму экрана, чтобы я мог заполнить соответствующий фон часов - круглый или квадратный. Я пробовал все решения, которые я нашел, но не они работают с классом Service. Все они нуждаются в Activity - это включает WatchViewStub, onApplyWindowInsets. Для них также требуется макет, в то время как мне это не нужно, поскольку у меня нет реального интерфейса для раздувания. Кроме того, я корректирую размер растрового изображения в соответствии с размерами экрана часов. Я тоже пробовал класс ShapeWear, но для меня это тоже не работает.

Есть ли простой и удобный способ применить соответствующий фон к соответствующей форме для чистых поверхностей часов? Я не хочу идти с компаньоном, так как хочу сохранить его простым и чистым.

Спасибо!

ответ

3

Я думаю, что у вас есть класс обслуживания CanvasWatchFaceService. В этом случае просто переопределите метод onApplyWindowInsets, и вы получите информацию о том, является ли экран круглым или квадратным.

@Override 
public void onApplyWindowInsets(WindowInsets insets) { 
     super.onApplyWindowInsets(insets); 
     mIsRound = insets.isRound(); 
} 
+0

Хорошо, похоже, сейчас это работает, я уверен, что пробовал. Однако теперь у меня другая проблема - кажется, что onApplyWindowsInsets называется AFTER onCreate и после onPropertiesChanged. Это означает, что если я хочу работать с Bitmap в onPropartiesChanged (например, измените масштаб), это не сработает. Как мне изменить логику? Потому что, если я не жду этого порядка, isRound() всегда возвращает «false» ...? –

Смежные вопросы