我正在尝试将Bitmap
绘制到TextureView
中显示的相机预览中。开发者指南告诉我:
“重要的是要注意只有一个生产者可以使用TextureView。例如,如果你使用TextureView来显示相机预览,你就不能同时使用lockCanvas()来绘制到TextureView上。” / p>
所以现在我想在FrameLayout中保留相机预览和另一个视图,但是当我尝试拍照时,TextureView完全是黑色的。
以下是一些代码:
View photoFrame = this.findViewById(R.id.fl_photo_frame);
photoFrame.setDrawingCacheEnabled(true);
photoFrame.buildDrawingCache();
Bitmap picture = photoFrame.getDrawingCache();
photoFrame.destroyDrawingCache();
try {
File file = new File(filePath);
OutputStream outputStream = new FileOutputStream(file);
picture.compress(Bitmap.CompressFormat.JPEG, 95, outputStream);
outputStream.flush();
outputStream.close();
} catch (FileNotFoundException e) {
Log.e("Error", "takePhoto: " + e.getMessage());
} catch (IOException e) {
Log.e("Error", "takePhoto: " + e.getMessage());
}
xml的一部分:
<FrameLayout android:id="@+id/fl_photo_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal">
<TextureView
android:id="@+id/textureView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal" />
<FrameLayout android:id="@+id/fl_overlay_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center">
<ImageView android:src="@drawable/icon"
android:layout_width="32dp"
android:layout_gravity="center"
android:layout_height="32dp"/>
</FrameLayout>
</FrameLayout>
我稍后会向fl_overlay_container
添加更多内容。
我得到的图像是全黑的,图标位于中心