0

ボタンをクリックすると、デバイス画面のスナップショットのスナップショットを撮りたいです。リンクの代わりにコード サンプルを提供してください。

前もって感謝します。

4

2 に答える 2

4

私は私の質問に対する答えを得ました。実際、私はビットマップをヌルとして取得しています。しかし、私はその理由と解決策を見つけました。

View v = findViewById(R.id.attachments_list);
    v.setDrawingCacheEnabled(true);
    // this is the important code :)
    // Without it the view will have a dimension of 0,0 and the bitmap will
    // be null
    v.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
            MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
    v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());

    v.buildDrawingCache(true);
    Bitmap bitmap = Bitmap.createBitmap(v.getDrawingCache());
于 2012-10-18T10:46:41.817 に答える
1

デバイスのスクリーンショットを取得することはできませんが (ルート化されていません)、アプリケーション内では取得できます。

以下は、アプリケーションの画面のスクリーンショットを撮り、SD カードにファイルを保存するコードです。

mLayoutRoot.setDrawingCacheEnabled(true); //mLayoutRoot is your Parent Layout(may be RelativeLayout, LinearLayout or etc..)
mLayoutRoot.buildDrawingCache();

Bitmap mBitmap= mLayoutRoot.getDrawingCache();
try {
    if(mBitmap!=null)
    {
        FileOutputStream out = new FileOutputStream("/sdcard/filename.png"));
        mBitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
        out.flush();
        out.close();
    }
} catch (Exception e) {}            
于 2012-10-18T08:54:48.303 に答える