2012-01-09 4 views
5

Возможно, что-то глупое происходит, но я пытаюсь включить аппаратное ускорение в таргетинге на приложения 3.1, за this tutorial.Аппаратное ускорение не включено

Я добавил следующее в мой манифест:

<uses-sdk 
    android:targetSdkVersion="12" 
    android:minSdkVersion="12" /> 

<application 
    ... 
    android:hardwareAccelerated="true"> 

Когда я проверить состояние аппаратного ускорения после View прилагается (по телефону isHardwareAccelerated() в переопределенная onAttachedToWindow()) Я вернулся верно, так что все выглядит отлично. Проблема в том, что Canvas SurfaceView НЕ ускоряется, так как canvas.isHardwareAccelerated() возвращает false. Я проверяю surfaceCreated(), и я тоже там верю, поэтому нет идеи, что Холст теряет эту настройку.

Любые указатели?

EDIT1:

Найдено this и this на группе разработчиков Google, но я действительно проверка после того, как View прилагается, если я проверяю это в onAttachedToWindow(), верно? Это на планшете Lenovo с 3,1 BTW.

EDIT2:

Я попытался отключить ускорение с помощью установки

<application 
    ... 
    android:hardwareAccelerated="false"> 

И я до сих пор видя правда вернулся из представления в onAttachedToWindow(), так что что-то здесь не так. Я не могу явно переключать hw ускорение от кода, может быть, проблема с конкретным устройством?

Кроме того, я вижу следующую строку спорадически в LogCat когда SurfaceView создана:

surface (identity=524) is invalid, err=-19 (No such device) 

EDIT3:

Просто мысли вслух здесь, но есть ли шанс, что Canvas не ускоряется из-за того, что он находится на собственной ветке, через типичную реализацию SurfaceView, которая использует цикл рисования, например, Lunar Lander?

ответ

4

Ожидаемое поведение. SurfaceView is не аппаратное ускорение. (link)

С Android 4.0 есть новый TextureView (здесь example).
См. Также SO question для предварительной доступности.

Обновление: только что протестировано на Transformer с Android 4.0, а Canvas TextureView также не ускоряется. : -/

Обновление Android 6.0: есть новый метод для аппаратного ускорения: https://developer.android.com/reference/android/view/Surface.html#lockHardwareCanvas()

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