【问题标题】:Hardware acceleration not being enabled未启用硬件加速
【发布时间】:2012-01-09 02:53:46
【问题描述】:

可能发生了一些愚蠢的事情,但我正在尝试在针对 3.1 的应用中启用硬件加速,每 this tutorial

我已将以下内容添加到我的清单中:

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

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

当我在附加视图后检查硬件加速状态时(通过在覆盖的 onAttachedToWindow() 中调用 isHardwareAccelerated())我返回 true,所以一切看起来都很好。问题是 SurfaceView 的 Canvas 没有被加速,因为canvas.isHardwareAccelerated() 返回 false。我正在检查surfaceCreated(),我也确实在那里,所以不知道为什么 Canvas 会丢失这个设置。

任何指针?

编辑1:

在 Google Developers 组中找到 thisthis,但如果我在 onAttachedToWindow() 中检查,我确实在附加视图后检查,对吧?这是在运行 3.1 BTW 的联想平板电脑上。

EDIT2:

我尝试通过设置禁用加速

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

我仍然看到从 onAttachedToWindow() 中的视图返回 true,所以这里有些东西不正确。我没有从代码中明确地 chanbing hw accel,也许是设备特定的问题?

另外,创建 SurfaceView 时,我在 LogCat 中偶尔看到以下行:

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

EDIT3:

只是在这里大声思考,但是由于 Canvas 位于自己的线程上,通过使用绘图循环的典型 SurfaceView 实现(如 Lunar Lander),是否有可能没有加速 Canvas?

【问题讨论】:

    标签: android android-manifest


    【解决方案1】:

    这是预期的行为。 SurfaceView不是硬件加速的。 (link)

    从 Android 4.0 开始,有一个新的TextureView(这里是一个example)。
    另请参阅此 SO question 了解 4.0 之前的可用性。

    更新:刚刚在带有 Android 4.0 的 Transformer 上进行了测试,TextureView Canvas 也没有硬件加速。 :-/

    更新Android 6.0:有一种新的硬件加速方法: https://developer.android.com/reference/android/view/Surface.html#lockHardwareCanvas()

    【讨论】:

      猜你喜欢
      • 2015-03-15
      • 1970-01-01
      • 1970-01-01
      • 2021-11-07
      • 2018-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多