Kindle Fire в какой-то момент меняет разрешение экрана…

Заявление об ограничении ответственности : это странная проблема, которая возникает только в Kindle Fire (пока).

Используемые технологии: Android SDK, Eclipse, LibGDX .

У меня есть относительно простое приложение, работающее с LibGDX . LibGDX работает за счет наличия потока OpenGL, который будет вызывать Create () (один раз), а затем Render () столько раз, сколько возможно (чтобы вы могли выполнять рендеринг…).

Итак, когда вы инициализируете устройство, вызывается ваш метод «Create ()», а затем, когда инициализируется поверхность OpenGL (все это происходит автоматически), начинает вызываться ваш Render ().

Если контекст OpenGL утерян, уничтожен и т. Д., LibGDX вызывает метод изменения размера (ширины, высоты).

Пока. Так хорошо.

Теперь я столкнулся со странной проблемой с Kindle Fire, когда все выглядело на несколько пикселей смещено или «вырезано». У Kindle Fire есть «софтбар» в нижней части экрана (20 пикселей), который вы не можете скрыть или пропустить, что «вроде нормально», потому что на устройстве нет физических кнопок. Ожидается, что вы прикоснетесь к этой мягкой полосе и получите более крупную полосу, чтобы вернуться, пойти домой и т. Д. Согласно Amazon, эту полосу нельзя удалить. (не на 100% ясно, но никто не нашел способа - это не нарушает правила Amazon).Единственное приложение, которое я видел, удаляет это, это Amazon Video Player для видео, транслируемых только из облака Amazon . Как видите, не существует способа «навсегда» скрыть эту полосу.

Таким образом, если полоса есть, ваше реальное состояние экрана - это не аппаратное разрешение 1024x600 (альбомная ориентация), а 1024x580. Поэтому я добавил к своим методам ведение журнала, чтобы увидеть, что происходит, и был удивлен этим… (помните методы create (), render () и resize ()):

12-23 15:17:04.119: I/myapp(19921): SCREEN HEIGHT AT CREATE(): 600
[snip other unrelated log stuff]
12-23 15:17:04.673: I/myapp(19921): SCREEN HEIGHT AT RENDER() LOOP: 600
[snip other unrelated log stuff]
12-23 15:17:04.705: I/myapp(19921): MyApp - Resize() Called.
12-23 15:17:04.705: I/myapp(19921): SCREEN HEIGHT AT RENDER() LOOP: 580

Итак, размер экрана был "изменен" на Kindle Fire "в какой-то момент".

Кто-нибудь сталкивался с чем-то подобным?

Это скриншот (обратите внимание на черную полосу сверху, это не я добавил!). Простите за размытие изображения, но это заказной проект, и я не могу ничего «раскрыть».

enter image description here

Самое интересное начинается, когда иногда полосы не будет, и приложение будет выглядеть следующим образом (опять же, извините за размытие). Обратите внимание, что верхней полосы нет…

enter image description here

При внимательном рассмотрении обоих снимков вы можете сказать, что нижней (которая должна быть одинаковой) нет. Зажигалка делает странные вещи.

Есть идеи?

Ассеты изначально были упакованы как 1024x600, но мы изменили это (сейчас 580) и предположим, что область просмотра теперь 1024x580, но мне было интересно, нашел ли кто-нибудь лучший способ справиться с этой ерундой? :)

примечание : у нас есть (скрыто) в манифесте. Ничего не делает.

Заранее спасибо.

5
задан Martin Marconcini 23 December 2011 в 14:55
поделиться