2

重複の可能性:
Android のスクリーンショット

(ビューのスクリーン ショットではなく) プログラムでスクリーンショットをキャプチャしたいので、ビューのスクリーン ショットを撮るアプリケーションを作成しました。

Javaコードを使用してデバイスのスクリーンショット(ユーザーが画像ファイルを開いた場合など)をキャプチャしようとしています(サービスを作成し、サービスから写真を撮ることを考えましたが、これを達成する方法がわかりません)。

フレーム バッファ fb0 を使用するネイティブ コードをいくつか見つけましたが、これについてはよく知っていて、使用方法がわかりません。

4

1 に答える 1

9

画面のスクリーンショットを撮り、SDカードに書き込むための解決策は次のとおりです

ルートレイアウトの設定:

View content = findViewById(R.id.layoutroot);
content.setDrawingCacheEnabled(true);

レンダリングされたビューを取得する関数:

private void getScreen()
{
    View content = findViewById(R.id.layoutroot);
    Bitmap bitmap = content.getDrawingCache();
    File file = new File( Environment.getExternalStorageDirectory() + "/test.png");
    try 
    {
        file.createNewFile();
        FileOutputStream ostream = new FileOutputStream(file);
        bitmap.compress(CompressFormat.PNG, 100, ostream);
        ostream.close();
    } 
    catch (Exception e) 
    {
        e.printStackTrace();
    }
}

追加することを忘れないでください

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

AndroidManifestに。

于 2012-07-11T10:21:16.433 に答える