如何检查android设备是否具有硬件加速功能?

如何检查android设备是否具有硬件加速功能?,android,android-canvas,gpu,hardware-acceleration,android-x86,Android,Android Canvas,Gpu,Hardware Acceleration,Android X86,我正在开发一个Android应用程序,它在某个x86设备(API 21)上崩溃,这在关闭硬件加速后不会发生。经过一番研究,我发现x86安卓设备只有在更新版本中才具有硬件加速功能 有没有办法在android应用程序中以编程方式检查设备是否支持硬件加速 编辑2: 比如你打字的时候chrome://gpu 进入chrome浏览器并获取图形功能状态,如Canvas,我只为该设备获取软件,如何在我的android代码中获得它 编辑1: 当我尝试在此x86设备(Dell Vincement 8 7840 A

我正在开发一个Android应用程序,它在某个x86设备(API 21)上崩溃,这在关闭硬件加速后不会发生。经过一番研究,我发现x86安卓设备只有在更新版本中才具有硬件加速功能

有没有办法在android应用程序中以编程方式检查设备是否支持硬件加速

编辑2:

比如你打字的时候chrome://gpu 进入chrome浏览器并获取图形功能状态,如Canvas,我只为该设备获取软件,如何在我的android代码中获得它

编辑1:

当我尝试在此x86设备(Dell Vincement 8 7840 API 21)上的示例应用程序上打开youtube.com并启用硬件加速时,会出现崩溃日志:

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)

如果目标API级别>=14,则默认情况下启用硬件加速,但也可以显式启用。对硬件加速的支持始于API 11

有两种不同的方法来检查应用程序是否是硬件加速的:

  • View.isHardwareAccelerated()
    如果
    视图
    连接到硬件加速窗口,则返回true
  • Canvas.isHardwareAccelerated()
    如果
    Canvas
    是硬件加速的,则返回true
如果必须在绘图代码中检查此项,请尽可能使用
Canvas.isHardwareAccelerated()
而不是
View.isHardwareAccelerated()

非常简单

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


我不是说启用和禁用硬件加速,而是说硬件加速本身的支持我冒昧地说,每台具有API 11+的设备都支持硬件加速。我有一台具有API 21的设备,但似乎不支持硬件加速,对于x86体系结构来说可能不是这样我不是说启用和禁用硬件加速,而是说硬件加速本身的支持如果您能够毫无错误地启用它,这意味着它确实支持它,但每当我尝试在webview中打开youtube.com等图形密集型工作时,它就会崩溃,崩溃日志指向本机代码