5

以下のようにスクリーンショットを撮っています。

 public static Bitmap takeScreenshot(Activity activity) {  
      View view = activity.getWindow().getDecorView();  
      view.setDrawingCacheEnabled(true);  
      view.buildDrawingCache();  
      Bitmap bitmap = view.getDrawingCache();  
      Rect rect = new Rect();  
      activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);  
      int statusBarHeight = rect.top;  
      int width = activity.getWindowManager().getDefaultDisplay().getWidth();  
      int height = activity.getWindowManager().getDefaultDisplay().getHeight();  
      Bitmap bitmap2 = Bitmap.createBitmap(bitmap, 0, statusBarHeight, width,  
          height - statusBarHeight);  
      view.destroyDrawingCache();  
      return bitmap2;  
    }  

しかし、私のレイアウトには Edittext があります。クリックするとキーボードがポップアップしますが、スクリーンショットにはこの方法を使用したキーボードが含まれていません。キーボードもキャプチャできるプログラムでスクリーンショットを撮るにはどうすればよいですか?

4

2 に答える 2

8

別の方法についてフォーラムのどこかを読んでください: -

Process sh = Runtime.getRuntime().exec("su", null,null);
OutputStream  os = sh.getOutputStream();
os.write(("/system/bin/screencap -p " + "/sdcard/img.png").getBytes("ASCII"));
os.flush();

あなたはそれを試すことができます。機能するかどうかはわかりませんが、雨の日のために保存しました:P.

編集:

投稿へのリンクを見つけました -スクリーンショットを撮るには?

ユーザーは、スクリーンショットは彼のために働くと言います。これはあなたの要件に合うはずだと思います。

于 2013-05-25T10:12:36.680 に答える
3

そのデバイスの画面からスクリーンショットを取得する方法はないようですis not rootedここでCommonsWareは次のように述べています。

「他人のアクティビティのスクリーンショット」を意味する場合は、明らかにプライバシーとセキュリティ上の理由から、サポートされていません。

アプリの実行中にエミュレータのスクリーンショットを取得できますが!

編集:

ASLしかし、 (Android Screenshot Library)と呼ばれるライブラリが存在します。

Android Screenshot Library (ASL) を使用すると、root アクセス権限がなくても Android デバイスからスクリーンショットをプログラムでキャプチャできます。代わりに、ASL はバックグラウンドで実行されているネイティブ サービスを利用し、デバイスの起動ごとに Android Debug Bridge (ADB) を介して開始されます。

私は試していませんが、詳細についてはこちらをご覧ください。

于 2013-05-25T11:19:32.233 に答える