2014-10-14 3 views
3

Я написал приложение, которое работает на круглых и квадратных часах с двумя макетами и watchViewStub. Поскольку moto 360 продается по Европе, у меня есть много сообщений о том, что Moto 360 не загружает закругленный макет. С эмулятором, я не могу воспроизвести это поведение, даже если я изменить локаль, как объяснить здесь: https://developer.android.com/guide/topics/resources/localization.html#testing Так я предполагаю, что это мой код ...Некоторые Moto 360 не загружают округленное расположение

Вот то, как я уже реализовали:

<android.support.wearable.view.WatchViewStub 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/watch_view_stub" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
app:rectLayout="@layout/rect_activity_camera" 
app:roundLayout="@layout/round_activity_camera"> 

Тогда в фрагменте я надуть WatchViewStub

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    final WatchViewStub stub = (WatchViewStub) getView().findViewById(R.id.watch_view_stub); 
    stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() { 
     @Override 
     public void onLayoutInflated(WatchViewStub stub) { 
      ... 
     } 
    } 

фрагмент используется в FragmentViewPager/FragmentGridPagerAdapter. До тех пор, пока я не получу Moto 360, никаких идей о том, как я могу отладить это?

Редактировать

WatchViewStub образец в Wear SDk имеет два различное поведение в зависимости от языковых настроек, так что я заполнить этот вопрос: https://code.google.com/p/android/issues/detail?id=77642

Важная

Этот вопрос обсуждается на различных должностях. чтобы избежать повторения обновленной информации только вопрос о Google Code будет обновляться, и я буду закончить это сообщения, как только проблема будет решен: https://code.google.com/p/android/issues/detail?id=77642

ответ

1

Есть много проблем с завышением раскладок, которые вызваны не правильно использования WatchViewStub. Я не вижу достаточно код выше, чтобы точно знать, но одна общая проблема при регистрации слушателя для часов вставках:

final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub); 
    stub.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() { 
     @Override 
     public WindowInsets onApplyWindowInsets(View view, WindowInsets windowInsets) { 
      // Need to also call the original insets since we have overridden the original             
      // https://developer.android.com/reference/android/view/View.OnApplyWindowInsetsListener.html         
      stub.onApplyWindowInsets(windowInsets); 

      return windowInsets; 
     } 
    }); 

я вижу случаи, когда люди забывают вернуть windowInsets, или забудьте позвонить окурок. onApplyWindowInsets(). Это приводит к созданию квадратной компоновки вместо круглой компоновки.

Другие проблемы вызваны тем, что забывают помещать те же элементы XML в файл round.xml, что и square.xml.

Какое сообщение об ошибке вы получаете в adb logcat?

+1

благодарит Wayne за помощью. Я только что получил французский Moto 360 с KGW42R, и я запускаю образец WatchViewStub, и он говорит, что «ваш экран прямоугольный». Я перезагрузил устройство на английском (США), а затем обнаружил круглый экран. Я наберу ошибку. Еще раз спасибо – eskan

+0

Не могли бы вы разместить ссылку на ошибку? Итак, вы говорите, что просто изменение языка устройства приводит к ошибке? –

+0

Я обновил сообщение со ссылкой на вопрос. Если я найду обходное решение, я обновлю это сообщение. – eskan

1

У меня есть информация для вас об этой ошибке.

Проблема возникает при переключении языков переключения часов при соединении с телефоном после сброса настроек. Вы можете избежать проблемы, выбрав тот же язык на носимом носителе, который используется на телефоне, чтобы после сбоя устройств не происходило никаких изменений.

Инструкции по устранению проблемы:

  1. завод сброса Moto 360.
  2. Когда носимые перезагружается, он спросит, какой язык вы хотели бы использовать.Выберите тот же язык, который вы используете на телефоне (не выбирайте значение по умолчанию для английского языка).
  3. В телефоне запустите приложение со спутника Android Wear и выберите в меню переполнения опцию «Пара с новой носимой».
  4. Соедините телефон с Moto 360.
+0

К сожалению, это обходное решение не работает вовремя. После перезапуска часы снова загружают квадратную компоновку. – eskan