我正在尝试截取活动的屏幕截图,以便在图库中看到它。但是代码不起作用,图像没有显示在gallery.I我在按钮单击事件中调用方法takePicSave()。 同样在清单文件中,有权限。
private void takePicSave()
{
Bitmap bitmap = takeScreenshot();
saveBitmap(bitmap);
}
public Bitmap takeScreenshot(){
View rootview = findViewById(android.R.id.content).getRootView();
rootview.setDrawingCacheEnabled(true);
return rootview.getDrawingCache();
}
public void saveBitmap(Bitmap bitmap){
Date date = new Date() ;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
File imagePath = new File(Environment.getExternalStorageDirectory() , dateFormat.format(date) + " .png");
FileOutputStream fos;
try {
fos = new FileOutputStream(imagePath);
bitmap.compress(CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,Uri.parse("file://" + Environment.getExternalStorageDirectory())));
} catch (FileNotFoundException e) {
Log.e("Error " , e.getMessage(), e);
} catch (IOException e) {
Log.e("Error ", e.getMessage(), e);
}
}
}
我得到的错误 “java.io.FileNotFoundException / mnt / sdcard / 2014-04-16.png(权限被拒绝)
答案 0 :(得分:0)
确保您已在清单文件中添加了读写外部存储的权限。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 1 :(得分:0)
我已经完成了这个,在我的一个项目中你可以尝试下面的功能
public static Bitmap takeScreenShotOfCurrentSticky(Activity activity,View v)
{
View view = v;
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap b1 = view.getDrawingCache();
Rect frame = new Rect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;
int width = activity.getWindowManager().getDefaultDisplay().getWidth();
int height = activity.getWindowManager().getDefaultDisplay().getHeight();
b = Bitmap.createBitmap(b1);
view.destroyDrawingCache();
System.out.println("~~~~Bitmap frm Screen shot"+b);
return b;
}
我已将此函数放在Application类中,因此传递活动对象和我们想拍摄屏幕的视图。您可以根据自己的要求进行更改。