16

我开发的Android 3.0应用程序,它运行得非常好,但客户坚持与2.2设备兼容。打开硬件加速如果可用(如Android 3+)与Android APK 2.2

禁用硬件加速,使用Android兼容包,NIO支持(对于任务和执行者)和一些重新实现视图方法我能够移植我的应用程序的Android 2.2和工作真的很好,但如果我运行这个apk更新的设备的性能是非常缓慢的,所以我想知道如何打开硬件加速,如果可用但仍然使用我的2.2 APK。

回答

30

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

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

这需要你有你的构建目标设为API级别11或更高,但你可能已经有了。

+1

构建目标是8,因此它可以在Android 2.2设备上运行。只需在minSdk = 8时添加android:hardwareAccelerated =“true”就会出错。 – 2012-04-26 19:51:37

+1

@MarcosVasconcelos:构建目标与它可以运行的设备没有任何关系。 – CommonsWare 2012-04-26 19:59:52

+0

的确,由于minSdkVersion得到了尊重,所以构建它的目标点并不重要。 – 2012-05-08 18:44:45

2

你可以看看here看你如何启用基于Android版本的功能。你也可以用反射来做,但它很笨重。

+0

那么,这帮助我运行每个版本的特定代码。谢谢! – 2012-05-08 18:43:55

4

如果你需要支持与旧的操作系统(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和更旧的版本上调用错误。