2

私はAndroidアプリケーションを開発中で、特定のx86デバイス(API 21)でクラッシュしますが、これはハードウェアアクセラレーションをオフにしても起こりません。少しの研究の結果、x86アンドロイドデバイスは新しいバージョンでのみハードウェアアクセラレーション機能を持つことがわかりました。アンドロイドデバイスにハードウェアアクセラレーション機能があるかどうかを確認するにはどうすればよいですか?

デバイスがハードウェアアクセラレーションをサポートしているかどうかをアンドロイドアプリでプログラムで確認する方法はありますか?

編集2:

あなたはクロム入力したときと同じように:Chromeブラウザに// GPUをし、私は、このデバイス用のソフトウェアを取得していますキャンバスのようなグラフィックス機能のステータスを取得し、どのように私は自分のアンドロイドのコードであることを得ることができます?

編集1:私はこれのx86デバイス上のサンプルアプリでyoutube.comを開こう

クラッシュログ(デル会場8 7840 API 21)のハードウェアアクセラレーションを持つ:

W/ActivityManager: Exception thrown during pause 
W/ActivityManager: android.os.TransactionTooLargeException 
W/ActivityManager:  at android.os.BinderProxy.transactNative(Native Method) 
W/ActivityManager:  at android.os.BinderProxy.transact(Binder.java:496) 
W/ActivityManager:  at android.app.ApplicationThreadProxy.schedulePauseActivity(ApplicationThreadNative.java:704) 
W/ActivityManager:  at com.android.server.am.ActivityStack.startPausingLocked(ActivityStack.java:825) 
W/ActivityManager:  at com.android.server.am.ActivityStack.finishActivityLocked(ActivityStack.java:2726) 
W/ActivityManager:  at com.android.server.am.ActivityStack.finishTopRunningActivityLocked(ActivityStack.java:2583) 
W/ActivityManager:  at com.android.server.am.ActivityStackSupervisor.finishTopRunningActivityLocked(ActivityStackSupervisor.java:2537) 
W/ActivityManager:  at com.android.server.am.ActivityManagerService.handleAppCrashLocked(ActivityManagerService.java:11680) 
W/ActivityManager:  at com.android.server.am.ActivityManagerService.makeAppCrashingLocked(ActivityManagerService.java:11577) 
W/ActivityManager:  at com.android.server.am.ActivityManagerService.crashApplication(ActivityManagerService.java:12261) 
W/ActivityManager:  at com.android.server.am.ActivityManagerService.handleApplicationCrashInner(ActivityManagerService.java:11772) 
W/ActivityManager:  at com.android.server.am.NativeCrashListener$NativeCrashReporter.run(NativeCrashListener.java:86) 

答えて

2

ハードウェアターゲットAPIレベルが> = 14の場合、デフォルトでアクセラレーションが有効になりますが、明示的に有効にすることもできます。ハードウェアアクセラレーションのためのサポートは、APIの使用を開始11

アプリケーションがハードウェア加速されるかどうかを確認するには、2つの異なる方法があります。

  • View.isHardwareAccelerated() trueを返しViewは、ハードウェアアクセラレーションウィンドウに添付されている場合は。あなたは、あなたの描画コードでこれを確認し、可能な場合Canvas.isHardwareAccelerated()の代わりView.isHardwareAccelerated()を使用する必要がある場合Canvasはハードウェアがある場合
  • Canvas.isHardwareAccelerated() trueを返しますが

を加速させました。

+0

私は、ハードウェアアクセラレーションを有効化および無効化の話ではないのですが、ハードウェアアクセラレーション自体 –

+0

のサポートは、私はAPIの11+を持つすべてのデバイスは、ハードウェアアクセラレーションをサポートしていると言うことは、ベンチャーでしょう。 – Fiil

+1

API 21を搭載したデバイスがあり、ハードウェアアクセラレーションをサポートしていないようです。おそらくx86アーキテクチャではそうではない –

-2

非常にシンプル

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

ハードウェアアクセラレーションの有効化と無効化については言及していませんが、ハードウェアアクセラレーション自体のサポートについては –

+0

エラーがなければ、それはそれをサポートしていることを意味します – DaX

+0

webviewでyoutube.comを開くようなグラフィック集中的な作業をしようとするとクラッシュし、ネイティブコードをクラッシュログポイントにします –

関連する問題