2011-11-02 5 views
1

私はAndroidでレイアウトのスクリーンショットを撮るためにこのコードを持っています。エラーは発生していませんが、スクリーンショットは取得されていません。誰かが私がここで間違っていることを理解するのを助けてくれますか?私はEclipseで新しく、難しいことを考え出している。また、スクリーンショットを撮る他の方法があれば、このスレッドの答えとして投稿できますか?御時間ありがとうございます!スクリーンショットを取ることができません

private void getScreenshot() 
       { 
        View content = findViewById(R.id.testView); 
        content.setDrawingCacheEnabled(true); 

        content.buildDrawingCache(true); 

        Bitmap bitmap = Bitmap.createBitmap(content.getDrawingCache()); 
        content.setDrawingCacheEnabled(false); 

        File file = new File(Environment.getExternalStorageDirectory() + "image.png"); 

        try 
        { 
         file.createNewFile(); 
         FileOutputStream ostream = new FileOutputStream(file); 
         bitmap.compress(CompressFormat.PNG, 100, ostream); 
         ostream.close(); 

        } 
        catch (Exception e) 
        { 
         e.printStackTrace(); 
        } 

        } 
+0

スクリーンショットが撮られていないことをどのように知っていますか?アプリクラッシュ?例外がスローされますか?ファイルは空ですか?イメージが壊れていますか?特定してください。 – Cristian

+0

どのようなタイプの 'View'がコンテンツですか? – slayton

+0

マニフェストで 'WRITE_EXTERNAL_STORAGE'を有効にしましたか? – DRiFTy

答えて

2

ファイルにパス区切り文字を追加する必要がありますか?すなわち

File file = new File(Environment.getExternalStorageDirectory() + 
        File.separator + "image.png"); 

あなたは、例えば、あなたが期待通りに動作しているかどうかを確認するために、あなたのコード内の多くのログやテストを追加する必要があります

  • あなたはそれが正しいことを確認するために作成しようとしているファイルの詳細情報をログに記録します。

  • ファイルを作成したら、ファイルが存在することをテストします。 if (!file.exists())

  • Bitmap.compress関数はブール値を返します。したがって、戻り値をチェックしてログに記録し、成功したかどうかを確認する必要があります。

もう一つの思考:多分あなたは、バッファリングされたデータがファイルに書き込まれていることを確認するためにostream.flush()(API docs here)を呼び出す必要がありますか?

私はあなたのアプリでこのコードを書いていると仮定しています。あなたはおそらくこれをすでに知っているでしょうが、DDMSは自分で撮りたい場合に備えてスクリーンショットを撮る方法を提供します。 Screenshotメニューオプションを有効にするデバイスを選択してください。

+0

すばらしい説明をありがとう!私は最終的に私のアプリで何が間違っているかを考えました....それはまったく別の問題です。私のスクリーンショットは電子メールに添付されることを意図していますが、ファイルが大きすぎるので表示されませんでした。ファイルサイズを小さくする方法についての考えはありますか? –

+1

100よりはるかに小さい数値をcompress関数に渡します。有効な値は0〜100です:http://developer.android.com/reference/android/graphics/Bitmap.html#compress%28android.graphics.Bitmap.CompressFormat,%20int,%20java.io.OutputStream%29 –

関連する問題