2012-01-09 16 views
5

Probabilmente qualcosa di insignificante, ma sto cercando di abilitare l'accelerazione hardware in un'app di targeting 3.1, per this tutorial.Accelerazione hardware non abilitata

Ho aggiunto il seguente al mio manifesto:

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

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

Quando controllo dello stato di accelerazione hardware, dopo la vista è attaccato (chiamando isHardwareAccelerated() in un sovrascritto onAttachedToWindow()) Io torno vero, così tutto sembra fantastico. Il problema è che la tela di SurfaceView NON viene accelerata, poiché canvas.isHardwareAccelerated() restituisce false. Sto verificando in surfaceCreated() e anch'io divento vero anche lì, quindi non ho idea di come la tela abbia perso questa impostazione.

Eventuali suggerimenti?

Edit1:

Trovato this e this sul gruppo Google Developers, ma sto davvero Controlli da eseguire View è collegato se sto controllando questo onAttachedToWindow(), giusto? Questo è su un Tablet Lenovo con 3,1 BTW.

EDIT2:

Ho provato disabilitando l'accelerazione tramite l'impostazione

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

E ancora sto vedendo vero tornato dalla View in onAttachedToWindow(), quindi qualcosa non è proprio qui. Non sto cambiando esplicitamente hw accel dal codice, forse un problema specifico del dispositivo?

Inoltre, sto vedendo la seguente linea sporadicamente in LogCat quando viene creato il SurfaceView:

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

Edit3:

solo pensando ad alta voce qui, ma c'è qualche possibilità che la tela non è essere accelerato a causa del fatto che si trova sul proprio thread, tramite la tipica implementazione di SurfaceView che utilizza un ciclo di disegno, come Lunar Lander?

risposta

4

Questo è il comportamento previsto. SurfaceView è non hardware accelerato. (link)

Da Android 4.0 c'è un nuovo TextureView (qui è un example).
Vedere anche questo SO question per la disponibilità pre-4.0.

Aggiornamento: appena testato su un trasformatore con Android 4.0 e TextureView Canvas non è accelerato HW. : -/

Aggiornamento Android 6.0: c'è un nuovo metodo per l'accelerazione hardware: https://developer.android.com/reference/android/view/Surface.html#lockHardwareCanvas()

Problemi correlati