2011-07-22 4 views
9

アクティビティに作成されたハードウェアアクセラレーションが有効になっているかどうかを一貫して検出できますか?私は、私の図書館のユーザーが、私が指示するように、私の活動のために特別にそれを無効にしないで、マニフェストを使ってそれを可能にすることを心配しています。実行時にハードウェアアクセラレーションを検出する:Android

私が見つけることができる唯一の堅実な情報http://android-developers.blogspot.com/2011/03/android-30-hardware-acceleration.html)は、私がView.isHardwareAccelerated()Canvas.isHardwareAccelerated()を問い合わせることができると言います。しかし、私の目的のために、私は図書館の活動が表示されているときにそれがオフになっていることを確認したいと思います。今のところ、私はそれがオンであるかオフであるかにかかわらず、一貫したyes/noを報告するものは得られません。ダミービューでハッキングを試み、それを自分のアクティビティに設定してからテストしましたが、常にfalseを返します。また、Window.getAttributes().flagsのテストを試みましたが、どちらも表示されません。

私のライブラリのハードウェアアクセラレーションされた描画パスが正しく機能せず、それを修正する方法がないように見えるため、これをテストしています。

答えて

6

Try FLAG_HARDWARE_ACCELERATEDflagsActivityInfoPackageManagergetActivityInfo()からのアクティビティの場合は、

+0

素晴らしい!それは、百万のおかげで動作します! – Jesse

+4

これを行う別の方法は、ActivityのonCreate()メソッドからgetDecorView()。isHardwareAccelerated()を呼び出すことです。 –

7

私はAndroidの新機能なので、上記の答えに示された手がかりでも詰まっていました。Googleの海のどこかでこのコードを検索して見つけました。誰かを助けることを願っています。

/** 
* Returns true if the given Activity has hardware acceleration enabled 
* in its manifest, or in its foreground window. 
* 
* TODO(husky): Remove when initialize() is refactored (see TODO there) 
* TODO(dtrainor) This is still used by other classes. Make sure to pull some version of this 
* out before removing it. 
*/ 
public static boolean hasHardwareAcceleration(Activity activity) { 
    // Has HW acceleration been enabled manually in the current window? 
    Window window = activity.getWindow(); 
    if (window != null) { 
     if ((window.getAttributes().flags 
       & WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED) != 0) { 
      return true; 
     } 
    } 

    // Has HW acceleration been enabled in the manifest? 
    try { 
     ActivityInfo info = activity.getPackageManager().getActivityInfo(
       activity.getComponentName(), 0); 
     if ((info.flags & ActivityInfo.FLAG_HARDWARE_ACCELERATED) != 0) { 
      return true; 
     } 
    } catch (PackageManager.NameNotFoundException e) { 
     Log.e("Chrome", "getActivityInfo(self) should not fail"); 
    } 

    return false; 
} 
+0

こんにちはブルース..以下の質問にもお答えください。http://stackoverflow.com/questions/12481198/hardware-acceleration-supported-device-list – saa

関連する問題