web-dev-qa-db-ja.com

android

Android screen ..誰もがそれを行う方法を知っていますか..?これはkoushik duttasのスクリーンショットに似ています..しかし、rootを使用せずに..そして、動作しているkoushik duttaスクリーンショットアプリケーションを持っている人はいますか..?動作していません..事前にお知らせください..ありがとうございます。

10
Sri Sri

ボタンをクリックしたとしましょう:

findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
       Bitmap bitmap = takeScreenshot();
       saveBitmap(bitmap);
   }
});

その後、次の2つの方法が必要です。

public Bitmap takeScreenshot() {
   View rootView = findViewById(Android.R.id.content).getRootView();
   rootView.setDrawingCacheEnabled(true);
   return rootView.getDrawingCache();
}

 public void saveBitmap(Bitmap bitmap) {
    File imagePath = new File(Environment.getExternalStorageDirectory() + "/screenshot.png");
    FileOutputStream fos;
    try {
        fos = new FileOutputStream(imagePath);
        bitmap.compress(CompressFormat.PNG, 100, fos);
        fos.flush();
        fos.close();
    } catch (FileNotFoundException e) {
        Log.e("GREC", e.getMessage(), e);
    } catch (IOException e) {
        Log.e("GREC", e.getMessage(), e);
    }
}
19

あなたはこのようなことを試すことができます

private RelativeLayout view;

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    view = (RelativeLayout)findViewById(R.id.relativeView);

    View v1 = view.getRootView();

    v1.setDrawingCacheEnabled(true);
    Bitmap bm = v1.getDrawingCache();
}
4
user741396

メソッドview.getDrawingCache()は、最初に、以前にキャッシュした画像の取得を試みます。スクリーンショットが最新であることを保証したい場合、これは問題を引き起こす可能性があります。たとえば、ユーザーがスクリーンショットボタンをクリックし、UIを変更してからもう一度クリックすると、キャッシュをワイプしない限り、2番目のスクリーンショットは最初のスクリーンショットと同じになります。次の方法の方が便利だと思います。

public Bitmap takeScreenshot() {
  View rootView = findViewById(Android.R.id.content).getRootView();
  Bitmap bitmap = Bitmap.createBitmap(rootView.getWidth(), rootView.getHeight(), Bitmap.Config.ARGB_8888);
  Canvas canvas = new Canvas(bitmap);
  rootView.draw(canvas);
  return bitmap;
}
3
zpr

申し訳ありませんが、rootまたはSDKなしでは不可能だと思います。

私は間違っていると証明されたいです。

アプリではありませんが、USBケーブルをお持ちの場合は、PCにAndroid SDKをインストールし、 androidscreencast を使用してPCからスクリーンショットを撮ることができます。root化する必要はありません。あなたの電話。

0
Nicolas Raoul