【问题标题】:Turn on hardware acceleration if available (such Android 3+) with Android APK 2.2使用 Android APK 2.2 打开硬件加速(如 Android 3+)
【发布时间】:2012-05-07 12:45:21
【问题描述】:

我为Android 3.0开发了一个应用程序,运行良好,但是客户端坚持要兼容2.2设备。

禁用硬件加速,使用 Android Compatibility Package、NIO-backport 支持(用于任务和执行程序)和 View 方法的一些重新实现我能够将我的应用程序移植到 Android 2.2 并且效果非常好,但是如果我运行这个 apk进入较新的设备时性能非常缓慢,所以我想知道如何打开硬件加速(如果可用)但仍使用我的 2.2 APK。

【问题讨论】:

    标签: android android-manifest apk android-compatibility android-hardware


    【解决方案1】:

    android:hardwareAccelerated="true" 添加到您的清单中,对于<activity><application>

    此属性在旧版本的 Android 上将被忽略,但在 Android 3.0+ 上会受到尊重。

    这将要求您将构建目标设置为 API 级别 11 或更高,但您可能已经有了。

    【讨论】:

    • 构建目标是 8,因此它可以在 Android 2.2 设备上运行。只需添加 android:hardwareAccelerated="true" 和 minSdk=8 就会出错。
    • @MarcosVasconcelos:构建目标与它可以运行的设备没有任何关系。
    • 没错,它的点是哪个构建目标并不重要,因为 minSdkVersion 受到尊重。
    • 所以如果您将 API 级别设置为 11 或更高,并设置 minSdk=8 并发布您的应用,那么它是否可供 android 2.2 用户使用?
    • 虽然问题并不重要,但我想知道您将如何抑制 XML 的警告?
    【解决方案2】:

    如果您需要旧操作系统(2.3.X 和更早版本)的支持设计,请不要将 android:hardwareAccelerated="true" 添加到您的清单中,请尝试在您的 java 中添加此代码:

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

    这在 OS 3.0++ 中有效,不会在 2.3.X 及更早版本上调用错误。

    【讨论】:

      【解决方案3】:

      您可以查看here,了解如何启用基于 Android 版本的功能。你也可以通过反射来做到这一点,但它很笨重。

      【讨论】:

      • 嗯,这帮助我运行每个版本的特定代码。谢谢!
      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 2015-11-29
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多