相机区域透明。
我在stackoverflow中搜索了类似的问题,并找到了一些答案,但所有这些都不适合我的情况。
她是我发现的一个问题:How to programmatically take a screenshot in Android?
我有一个自定义视图( CameraView )可以显示相机抓取的内容。但是当我使用上面的方式截图时,我发现 CameraView 区域是透明,但这是我不想要的。
有我使用手机截图的图片。为了能够很好地显示我向ImageView的父母添加黑色背景。
截屏之前:http://paradisehell.org/img/bug/before_screenshot.jpg
屏幕截图:http://paradisehell.org/img/bug/after_screenshot.jpg
这是我的代码:
View view = ((Activity)mContext).getWindow().getDecorView().getRootView();
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);
if (bitmap != null && listener != null){
listener.onScreenShot(bitmap);
}
public void onScreenShot(Bitmap shot) {
Log.e("TAG", CameraViewUtils.getBase64StringFromBitmap(shot));
imageView.setImageBitmap(shot);
}
你有什么想法可以解决吗?请告诉我,谢谢。
答案 0 :(得分:0)
首先放置清单权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
这是帮助您截取屏幕的代码
private void Screenshot() {
Date now = new Date();
android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now);
String mPath = Environment.getExternalStorageDirectory().toString() + "/" + now + ".jpg";
View v1 = getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
File image = new File(mPath);
FileOutputStream output = new FileOutputStream(image);
int quality = 100;
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, output);
output.flush();
output.close();
openScreenshot(image);
}
这可以帮助你。