我有一个CameraSourcePreview类,它扩展了ViewGroup。
public class CameraSourcePreview extends ViewGroup
此自定义视图用于以下XML:
<LinearLayout
android:id="@+id/photo_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0.55">
<com.google.android.gms.samples.vision.face.facetracker.ui.camera.CameraSourcePreview
android:id="@+id/preview"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.gms.samples.vision.face.facetracker.ui.camera.GraphicOverlay
android:id="@+id/face_overlay"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</com.google.android.gms.samples.vision.face.facetracker.ui.camera.CameraSourcePreview>
</LinearLayout>
我正在尝试做的是制作LinearLayout的截图:
View photoLayout = (View) findViewById(R.id.photo_layout);
photoLayout.setDrawingCacheEnabled(true);
photoLayout.buildDrawingCache(true);
Bitmap bitmap = Bitmap.createBitmap(photoLayout.getDrawingCache());
photoLayout.draw(new Canvas(bitmap));
photoLayout.setDrawingCacheEnabled(false);
try {
File myFile = new File(Environment.getExternalStorageDirectory().getAbsoluteFile(), "snap.png");
FileOutputStream out = new FileOutputStream(myFile);
bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
out.flush();
out.close();
Log.d(Values.CAMERA_TAG, "Saved picture to" + myFile.getAbsolutePath());
} catch (Exception e) {
e.printStackTrace();
}
问题是:屏幕截图已保存,但CameraSourcePreview视图始终为黑色。 GraphicOverlay被捕获得很好。
注意:CameraSourcePreview是实时相机视图。 GraphicOverlay在人脸上绘制图片(检测到时)。