Ich versuche, eine Bitmap in einem ImageView anzuzeigen. Mit der Camera2-API erhalte ich eine ImageReader
über die ImageReader.OnImageAvailableListener
. Ich erstelle dann eine Bitmap aus dem Bild:Bitmap ist nicht richtig Größe und Ausrichtung
private final ImageReader.OnImageAvailableListener mOnImageAvailableListener = new
ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
mBackgroundHandler.post(new ImageSaver(reader.acquireLatestImage()));
}
};
private class ImageSaver implements Runnable {
private final Image mImage;
public ImageSaver(Image image) {
mImage = image;
}
@Override
public void run() {
ByteBuffer byteBuffer = mImage.getPlanes()[0].getBuffer();
byte[] bytes = new byte[byteBuffer.remaining()];
byteBuffer.get(bytes);
// need to set the bitmap the size of the screen
final Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
runOnUiThread(new Runnable() {
@Override
public void run() {
imageView.setImageBitmap(bitmap);
}
});
Wie Sie aus dem Screenshot sagen können, wird das Bitmap nicht den ganzen Bildschirm ausfüllen und es ist in der Landschaft eher als Hochformat. Mein ImageView sieht so aus:
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageView"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />
Und seine Eltern ist die RelativeLayout, die den gesamten Bildschirm füllt. Was mache ich falsch?
Dies könnte helfen: https://stackoverflow.com/questions/9015372/how-to-rotate-a-bitmap-90-degrees – Barns