2

Ich arbeite an einer Android-App und stürzt auf einem bestimmten x86-Gerät (API 21) ab, was nach dem Abschalten der Hardwarebeschleunigung nicht passiert. Nach ein wenig Forschung habe ich festgestellt, dass x86 Android-Geräte Hardware-Beschleunigungsfunktionen nur in neueren Versionen haben.Wie kann ich überprüfen, ob ein Android-Gerät über Hardwarebeschleunigungsfunktionen verfügt?

Gibt es eine Möglichkeit, programmgesteuert in der Android App zu überprüfen, ob das Gerät Hardwarebeschleunigung unterstützt oder nicht?

Edit 2:

Wie, wenn Sie chrome: // eingeben gpu in Chrome-Browser und erhalten Graphics Statusmerkmal wie Leinwand, die ich Software bin immer nur für dieses Gerät, wie kann ich das in meinem Android-Code erhalten ?

Edit 1:

Crash-logs bei dem Versuch, auf diesem youtube.com x86 Gerät (Dell Spielort 8 7840 API 21) mit Hardware-Beschleunigung auf eine Beispielanwendung zu öffnen on:

W/ActivityManager: Exception thrown during pause 
W/ActivityManager: android.os.TransactionTooLargeException 
W/ActivityManager:  at android.os.BinderProxy.transactNative(Native Method) 
W/ActivityManager:  at android.os.BinderProxy.transact(Binder.java:496) 
W/ActivityManager:  at android.app.ApplicationThreadProxy.schedulePauseActivity(ApplicationThreadNative.java:704) 
W/ActivityManager:  at com.android.server.am.ActivityStack.startPausingLocked(ActivityStack.java:825) 
W/ActivityManager:  at com.android.server.am.ActivityStack.finishActivityLocked(ActivityStack.java:2726) 
W/ActivityManager:  at com.android.server.am.ActivityStack.finishTopRunningActivityLocked(ActivityStack.java:2583) 
W/ActivityManager:  at com.android.server.am.ActivityStackSupervisor.finishTopRunningActivityLocked(ActivityStackSupervisor.java:2537) 
W/ActivityManager:  at com.android.server.am.ActivityManagerService.handleAppCrashLocked(ActivityManagerService.java:11680) 
W/ActivityManager:  at com.android.server.am.ActivityManagerService.makeAppCrashingLocked(ActivityManagerService.java:11577) 
W/ActivityManager:  at com.android.server.am.ActivityManagerService.crashApplication(ActivityManagerService.java:12261) 
W/ActivityManager:  at com.android.server.am.ActivityManagerService.handleApplicationCrashInner(ActivityManagerService.java:11772) 
W/ActivityManager:  at com.android.server.am.NativeCrashListener$NativeCrashReporter.run(NativeCrashListener.java:86) 

Antwort

2

Hardware Die Beschleunigung ist standardmäßig aktiviert, wenn die Ziel-API-Ebene> = 14 ist. Sie kann jedoch auch explizit aktiviert werden. Unterstützende für die Hardwarebeschleunigung begann mit API 11.

Es gibt zwei verschiedene Möglichkeiten, um zu überprüfen, ob die Anwendung Hardware beschleunigt wird:

  • View.isHardwareAccelerated() gibt true zurück, wenn die View auf eine Hardware-beschleunigte Fenster angebracht ist.
  • Canvas.isHardwareAccelerated() gibt true zurück, wenn die Canvas ist hardwarebeschleunigte

Wenn Sie dies in Ihrer Zeichnung Code zu überprüfen, verwenden Sie Canvas.isHardwareAccelerated() statt View.isHardwareAccelerated(), wenn möglich.

+0

ich spreche nicht über das Aktivieren und Deaktivieren von Hardware-Beschleunigung, aber die Unterstützung von Hardware-Beschleunigung selbst –

+0

ich wagen, dass jedes Gerät mit API sagen würde 11+ Unterstützung für Hardware-Beschleunigung hat. – Fiil

+1

Ich habe ein Gerät mit API 21 und unterstützt keine Hardwarebeschleunigung scheint es, das ist nicht wahr für x86-Architektur –

-2

Ziemlich einfach

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

Ich spreche nicht über Aktivieren und Deaktivieren der Hardwarebeschleunigung, sondern die Unterstützung der Hardwarebeschleunigung selbst –

+0

Wenn Sie es aktivieren können ohne Fehler bedeutet es, dass es unterstützt – DaX

+0

Aber es stürzt ab, wenn ich versuche, einige grafikintensive Arbeit wie das Öffnen von youtube.com in der Webansicht, Crash-Log-Punkte auf nativen Code –