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); } }