16

Ho sviluppato un'applicazione per Android 3.0 e funziona perfettamente, ma il client insiste sulla compatibilità con dispositivi 2.2.Accensione dell'accelerazione hardware se disponibile (come Android 3+) con Android APK 2.2

Disabilitazione dell'accelerazione hardware, utilizzando Android Compatibility Package, un supporto NIO-backport (per le attività e gli esecutori) e alcuni reimplementazione dei metodi di visualizzazione Sono riuscito a eseguire il porting della mia app per Android 2.2 e funziona davvero bene, ma se eseguo questo apk in un dispositivo più recente le prestazioni sono estremamente lente, quindi voglio sapere come attivare l'accelerazione hardware, se disponibile, ma utilizza ancora il mio 2.2 APK.

risposta

30

Aggiungi android:hardwareAccelerated="true" al file manifest, per <activity> o <application>.

Questo attributo verrà ignorato su versioni precedenti di Android, ma sarà onorato su Android 3.0+.

Questo richiederà di impostare il target di build su API di livello 11 o superiore, ma probabilmente lo avete già.

+1

Il target di build è 8, quindi può essere eseguito su dispositivi Android 2.2. Aggiungendo solo android: hardwareAccelerated = "true" con minSdk = 8 danno errori. –

+1

@MarcosVasconcelos: il target di costruzione non ha assolutamente nulla a che fare con i dispositivi su cui può essere eseguito. – CommonsWare

+0

È vero, non importa quale sia il target di costruzione, poiché viene rispettata la versione minSdk. –

2

È possibile cercare here per vedere come è possibile abilitare le funzionalità in base alla versione di Android. Puoi farlo anche con la riflessione, ma è goffo.

+0

Bene, questo mi ha aiutato a eseguire codice specifico per versione. Grazie! –

4

Se hai bisogno di supporto escogita con il vecchio OS (2.3.x e più anziani) versione, non aggiunge android:hardwareAccelerated="true" al vostro manifesto, prova a aggiungere questo codice nel tuo Java:

try { if(Build.VERSION.SDK_INT >= 11) getWindow().setFlags(16777216, 16777216); } catch(Exception e) {} // FLAG_HARDWARE_ACCELERATED == 16777216 (0x01000000) 

Questo è un lavoro in OS 3.0+ + e non chiamare l'errore su 2.3.X e precedenti.