2012-01-09 19 views
5

Prawdopodobnie dzieje się coś głupiego, ale próbuję włączyć przyspieszenie sprzętowe w aplikacji kierowanej na 3.1, na this tutorial.Przyspieszenie sprzętowe nie jest włączone

Dodałem następujące do mojego manifestu:

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

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

Kiedy sprawdzić stan akceleracji sprzętowej po View jest dołączony (poprzez wywołanie isHardwareAccelerated() w nadpisane onAttachedToWindow()) Jestem powrócił prawdziwy, więc wszystko wygląda świetnie. Problem polega na tym, że płótno SurfaceView NIE jest akcelerowane, ponieważ canvas.isHardwareAccelerated() zwraca wartość false. Sprawdzam w surfaceCreated() i również tam się sprawdzam, więc nie mam pojęcia, na co płótno traci to ustawienie.

Jakieś wskazówki?

Edit1:

Znaleziony this i this na grupie Google Developers, ale ja rzeczywiście sprawdzanie po View jest dołączony jakbym sprawdzenie tego w onAttachedToWindow(), prawda? Dotyczy to tabletu Lenovo z 3.1 BTW.

EDIT2:

Próbowałem wyłączyć akcelerację poprzez ustawienie

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

A ja wciąż widząc prawda wrócił z widokiem na onAttachedToWindow(), więc coś tu nie jest w porządku. Nie mówię wprost o hw accel z kodu, może problem specyficzny dla urządzenia?

Również widzę następującą linię sporadycznie w LogCat gdy SurfaceView tworzony jest:

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

Edit3:

Tylko głośno myślę tutaj, ale czy jest jakaś szansa, że ​​płótna nie jest jest przyspieszany ze względu na fakt, że znajduje się na własnym wątku, poprzez typową implementację SurfaceView, która wykorzystuje pętlę rysunkową, jak Lunar Lander?

Odpowiedz

4

To oczekiwane zachowanie. SurfaceView jest przyspieszany sprzętowo o , a nie. (link)

Od Androida 4.0 jest nowy TextureView (tutaj jest example).
Zobacz także tę wersję SO question dla wersji przed 4.0.

Aktualizacja: Właśnie przetestowano na transformatorze z systemem Android 4.0 i płótnie TextureView nie przyspieszono również w trybie HW. : -/

Aktualizacja Android 6.0: jest nowa metoda dla akceleracji sprzętowej: https://developer.android.com/reference/android/view/Surface.html#lockHardwareCanvas()