【发布时间】:2016-08-31 00:41:27
【问题描述】:
我正在开发一个 Android 应用程序,它在某个 x86 设备 (API 21) 上崩溃,这在关闭硬件加速后没有发生。经过一番研究,我发现 x86 android 设备只有在较新的版本才有硬件加速功能。
如果设备支持硬件加速,是否有任何方法可以在 android 应用程序中以编程方式检查?
编辑 2:
就像你在 chrome 浏览器中输入 chrome://gpu 并获得像 Canvas 这样的图形功能状态,我只为该设备获取软件,我如何在我的 android 代码中获取它?
编辑 1:
当我尝试在此 x86 设备(Dell Venue 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)
【问题讨论】:
标签: android android-canvas gpu hardware-acceleration android-x86