この記事は最終更新日から1年以上経過しています。
Androidでは、画面のキャプチャはできないようですが、ImageViewのキャプチャならキャッシュを利用してできるようです。
ローカルにPNG形式で保存するサンプルです。
1 | private boolean ScreenShot(ImageView imgView, String filename) { |
3 | FileOutputStream out = openFileOutput(filename, MODE_PRIVATE); |
5 | imgView.setDrawingCacheEnabled( false ); |
6 | imgView.setDrawingCacheEnabled( true ); |
8 | Bitmap bmp = Bitmap.createBitmap(imgView.getDrawingCache()); |
9 | bmp.compress(CompressFormat.PNG, 100 , out); |
15 | } catch (FileNotFoundException e) { |
18 | } catch (IOException e) { |
SDカードに保存する場合
1 | private String PATH = Environment.getExternalStorageDirectory().toString(); |
2 | private Uri IMAGE_URI = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; |
4 | private boolean ScreenShot(ImageView imgView, String filename) { |
6 | File file = new File(PATH, filename); |
7 | FileOutputStream out = new FileOutputStream(file); |
9 | imgView.setDrawingCacheEnabled( false ); |
10 | imgView.setDrawingCacheEnabled( true ); |
12 | Bitmap bmp = Bitmap.createBitmap(imgView.getDrawingCache()); |
13 | bmp.compress(CompressFormat.JPEG, 100 , out); |
16 | ContentResolver cr = getContentResolver(); |
18 | long dateTaken = System.currentTimeMillis(); |
20 | ContentValues values = new ContentValues( 5 ); |
22 | values.put(Images.Media.TITLE, "name" ); |
23 | values.put(Images.Media.DISPLAY_NAME, filename); |
24 | values.put(Images.Media.DATE_TAKEN, dateTaken); |
25 | values.put(Images.Media.MIME_TYPE, "image/jpeg" ); |
26 | values.put(Images.Media.DATA, PATH + "/" + filename); |
28 | cr.insert(IMAGE_URI, values); |
32 | } catch (FileNotFoundException e) { |
35 | } catch (IOException e) { |
プログラムど素人です、すいません
ScreenShot(ImageView imgView, String filename)
この部分のimgViewにはなにを入れればいいのでしょうか?専門用語などもあまり分からないため、分かりやすく教えて頂けるとありがたいです(^^;
コメントありがとうございます(^^)
ImageViewについては理解されているという前提でお答えさせていただきます。
※もしもImageViewについて知りたい、ということであればまたコメントください。
このScreenShotというメソッド(関数)は、文字通りスクリーンショットを保存するもので、
ImageViewに表示されているものを保存するという処理が目的となります。
例えば、表示した画像にフィルター加工をする、それを保存するといった利用の仕方になります。