在Android上分享屏幕截图。每次共享相同的图像

时间:2014-05-21 08:18:09

标签: android image file screenshot sharing

我创建了一个截取屏幕截图的函数,将其保存在.jpeg类型的临时文件中,然后允许用户在Facebook或蓝牙上共享它。这是我的共享功能:

public Bitmap Share(View v) {
    // Sound
    soundPool.play(button_sound, 1.0f, 1.0f, 0, 0, 1.0f);

    // Image
    v.setDrawingCacheEnabled(true);
    v.setLayerType(View.LAYER_TYPE_NONE, null);
    Bitmap bitmap = Bitmap.createBitmap(v.getDrawingCache());
    File file = new File(Environment.getExternalStorageDirectory()
            + File.separator + "temporary_file.jpg");
    try {
        file.createNewFile();
        FileOutputStream ostream = new FileOutputStream(file);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 90, ostream);
        ostream.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

    // Share
    Intent share = new Intent(Intent.ACTION_SEND);
    share.setType("image/jpeg");
    String filel = "file://" + Environment.getExternalStorageDirectory()
            + File.separator + "temporary_file.jpg";
    share.putExtra(Intent.EXTRA_STREAM, Uri.parse(filel));

    startActivity(Intent.createChooser(share, "Share Image"));
    return bitmap;
}

我的问题是它需要截图,但是当我尝试共享一个新截图时,它总是会一遍又一遍地共享相同的屏幕截图。当我使用文件管理器检查时,图像是不同的。所以我不知道是什么造成的。

非常感谢你的时间。

2 个答案:

答案 0 :(得分:1)

请在getBitmap

之前使您的视图无效()

看起来像:

v.inValidated(); 
v.setDrawingCacheEnabled(true);

答案 1 :(得分:1)

首先,file.createNewFile()仅在文件不存在时有效。它在失败时不会抛出任何异常,只返回true表示成功,false表示失败,

bitmap.compress(Bitmap.CompressFormat.JPEG, 90, ostream);也是如此。此方法在失败时也不会抛出任何异常,只返回true表示成功,false表示失败,

我不知道它是否导致错误,但您可能想要调查一下。例如,您可以尝试在文件已存在时先删除它。