如何截取屏幕截图并将其保存在内部存储中? Android的

时间:2016-06-19 02:11:25

标签: java android

我正在实施一个按钮,可让您截取屏幕截图,但我想将其保存在Android内部存储设备而不是外部存储设备(SD卡)中。

我试过了:

private void takeScreenshot(View v) {

    v = getWindow().getDecorView().getRootView();
    v.setDrawingCacheEnabled(true);
    Bitmap bitmap = Bitmap.createBitmap(v.getDrawingCache());
    v.setDrawingCacheEnabled(false);
   saveToInternalStorage(bitmap)

}

我使用按钮的OnClick方法启动了此方法:

192.168.1.249   macduff
192.168.1.249   dc2-mysql-01.kattare.com

但这并没有奏效。相反,当我点击该按钮时,我的手机上会显示一条错误消息:"应用已停止"。

希望你能帮助我。

2 个答案:

答案 0 :(得分:0)

/**
 * This function captures any Android views to a bitmap shapshot
 * and save it to a file path
 * and optionally open it with android pciture viewer
 */
public void CaptureView(View view, String filePath, boolean bOpen) {
        view.setDrawingCacheEnabled(true);
        Bitmap b = view.getDrawingCache();

        try {
            b.compress(CompressFormat.JPEG, 95, new FileOutputStream(filePath));
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if (bOpen) {
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            intent.setDataAndType(Uri.parse("file://" + filePath), "image/*");
            startActivity(intent);
        }
}

用法:

File sdcard = Environment.getExternalStorageDirectory();
String path = sdcard + "/demo.jpg";
CaptureView(someViewInstace, path, false);

您可以使用 Context.getFilesDir()方法获取内部存储的路径:

String path = yourActivity.getFilesDir() + "/" + name);

答案 1 :(得分:0)

我认为您需要使用openFileOutput来获取FileOutputStream,请尝试按照文档https://developer.android.com/training/basics/data-storage/files.html

中的示例进行操作

logcat中的错误是什么?