屏幕捕获文件未保存

时间:2016-07-31 08:54:54

标签: android file screenshot

根据此链接(How to programmatically take a screenshot in Android?),我使用答案进行捕获并将其保存在设备的外部存储器中。

我已清除所有权限,并根据日志,文件根本不为空。但我无法在图库或文件浏览器中找到该文件。

为什么会这样?有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

关于Rotwang,我已经弄清楚问题是什么了。

没有看到getExternalStorageDirectory()的路径返回要保存的文件的有效目录。

就我而言,它是关于保存用户在屏幕上查看的屏幕截图。

所以,我使用了Environment.getExternalStoragePublicDirectory(                     Environment.DIRECTORY_PICTURES);代替。

因此,保存屏幕截图的完整代码如下所示。

 private void takeScreenshot() {
    Date now = new Date();
    android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now);

    try {

        File path = Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_PICTURES);
        File file = new File(path, now + ".jpg");

        path.mkdirs();

        View v1 = getWindow().getDecorView().getRootView();
        v1.setDrawingCacheEnabled(true);
        Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
        v1.setDrawingCacheEnabled(false);

        //File imageFile = new File(mPath);

        FileOutputStream outputStream = new FileOutputStream(file);
        int quality = 100;
        bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
        outputStream.flush();
        outputStream.close();

        MediaScannerConnection.scanFile(this,
                new String[] { file.toString() }, null,
                new MediaScannerConnection.OnScanCompletedListener() {
                    public void onScanCompleted(String path, Uri uri) {
                        Log.e("ExternalStorage", "Scanned " + path + ":");
                        Log.e("ExternalStorage", "-> uri=" + uri);
                    }
                });


    } catch (Throwable e) {
        Log.e("Error", "Exception on TakeScreenshot", e);
    }
}

再次感谢Rotwang。

相关问题