16

Android 3.0用のアプリケーションを開発しましたが、正常に動作しますが、クライアントは2.2デバイスとの互換性を求めます。Android APK 2.2で利用可能なハードウェアアクセラレーション(Android 3+など)を有効にします。

Android Compatibility Package、NIO-backportサポート(タスクとエグゼキュータ用)、およびViewメソッドの再実装を使用して、ハードウェアアクセラレーションを無効にしました。Android 2.2用にアプリケーションを移植できました。 APKを新しいデバイスに追加するとパフォーマンスが極端に遅くなるので、ハードウェアアクセラレーションを有効にする方法を知りたいが、まだ2.2 APKを使用している。

答えて

30

<activity>または<application>のいずれかのマニフェストにandroid:hardwareAccelerated="true"を追加します。

この属性は古いバージョンのAndroidでは無視されますが、Android 3.0以降ではこの属性は無視されます。

これは、ビルドターゲットをAPIレベル11以上に設定する必要がありますが、おそらくそれは既にあるでしょう。

+1

ビルドターゲットは8ですので、Android 2.2デバイスで実行できます。単にandroid:hardwareAccelerated = "true"をminSdk = 8に追加すると、エラーが発生します。 –

+1

@MarcosVasconcelos:ビルドターゲットは、実行可能なデバイスとは何の関係もありません。 – CommonsWare

+0

実際、minSdkVersionが尊重されるので、どのビルドターゲットがポイントであるかは実際問題ではありません。 –

2

hereを見ると、Androidのバージョンに基づいて機能を有効にする方法を確認できます。あなたも反射でそれを行うことができますが、それはclunkyです。

+0

これは、バージョンごとに特定のコードを実行するのに役立ちました。ありがとう! –

4

あなたはJavaでこのコードを追加してみてください、あなたのマニフェストにandroid:hardwareAccelerated="true"を追加していない、古いOS(2.3.x以降と古い)バージョンと工夫をサポートする必要がある場合は:

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

これは3.0+ OSでの作業です2.3.Xとそれ以前のバージョンでは+と呼ばれないエラーです。

関連する問題