3

画面に何かを描いているときにビデオを生成した後、Androidのスクリーンショットを記録しようとしています。「for」ループでこれを行うと考えられていますが、getDrawingCache() メソッドを呼び出したときに問題が発生しました。原則として正しく動作しますが、「描画キャッシュ」が呼び出されたときに画面上で何かを変更すると、エラーが報告されずに Android アプリが閉じられます。以下は私のソースコードです。

public void run() {
        Bitmap screenshot;
        File file;
        FileOutputStream fileOutputStream;

        this.view.setDrawingCacheEnabled(true);

        for (long i = 1; record; i++) {

            screenshot = (Bitmap) Bitmap.createBitmap(view.getDrawingCache());

            file = new File(directory, "frm" + i + ".jpg");

            try {
                fileOutputStream = new FileOutputStream(file);

                screenshot.compress(CompressFormat.JPEG, 10, fileOutputStream);

                fileOutputStream.close();
                ScreenshotRecorder.sleep(50);

            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
        this.view.setDrawingCacheEnabled(false);

    }

Android スクリーン レコーダーを入手する別の方法を探しましたが、オープン ソース アプリは見つかりませんでした。誰かが Android のスクリーン キャプチャを取得する方法を知っていれば、私は感謝しています。全てに感謝。

(私は Xoom タブレットと Android 3.0 バージョンを使用しています)

4

2 に答える 2

0

試す:

view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.buildDrawingCache(true);

null画像を避けるためにここに私の答えから

于 2012-05-23T22:13:22.997 に答える
0

view.buildDrawingCache(...)get drawing cacheを呼び出す前に呼び出す必要があると思います。そうしないと、何も取得できなくなります。これについては、こちらで読むことができます

于 2012-05-23T22:11:05.247 に答える