Ouya - слишком большие размеры

Я тестирую свой видеоплеер на устройстве OUYA, и он почти сразу падает с ошибкой "размер слишком большой" (см. Дамп logcat ниже). Если кто-нибудь знает обходной путь или способ установить максимальное измерение, я буду благодарен.

D / MySurface (2651): поверхность создана
W/InputDispatcher(319): Попытка отменить регистрацию уже незарегистрированного входного канала '41daf688 tv.ouya.console.wallpaper.OozeService (server)'
I/WindowState(319): WIN DEATH: Window{41daf688 tv.ouya.console.wallpaper.OozeService paused=false}
I/WindowManager(319): WINDOW DIED Window{41daf688 tv.ouya.console.wallpaper.OozeService paused=false}
E/SurfaceFlinger(109): слишком большие размеры 2560 x 1472
E/SurfaceFlinger(109): ошибка createNormalSurfaceLocked() (неверный аргумент)
W/WindowStateAnimator(319): OutOfResourcesException создает поверхность
I / WindowManager (319): Недостаточно памяти для поверхности! Ищем утечки...
W/WindowManager(319): нет протекших поверхностей; убийство приложений!
W/ActivityManager(319): уничтожение процессов. Свободная память при настройке 0
W/ActivityManager(319): уничтожение ProcessRecord{41d9cae8 2651:example.android.player/u0a37} (прил. 0): свободная память
W / WindowManager (319): Похоже, мы восстановили память, очистив поверхность для повторной попытки.
W / WindowManager (319): из-за сбоя памяти немного ждет следующего макета

Я попытался изменить разрешение через этот пост, но безуспешно: http://forums.ouya.tv/discussion/2170/setting-resolution-not-working

1 ответ

Решение

Я нашел обходной путь для этого, используя обратный вызов Surface с предустановленным значением max для ширины и высоты:

@Override
public void surfaceCreated (держатель SurfaceHolder) {
    Rect rect = holder.getSurfaceFrame();
    if (rect.width() > maxWidth || rect.height() > maxHeight) {
        holder.setFixedSize(maxWidth, maxHeight);
    }
}
Другие вопросы по тегам