Fix front facing camera

This commit is contained in:
Felix Atsma
2017-06-28 16:03:16 +02:00
parent 93434a981f
commit 0560e6a0fb
2 changed files with 24 additions and 13 deletions

View File

@@ -127,7 +127,7 @@ public class CameraFragment extends Fragment implements PostUploader.PostUploadL
public void onPictureTaken(byte[] data, Camera camera) { public void onPictureTaken(byte[] data, Camera camera) {
mPhoto = BitmapFactory.decodeByteArray(data, 0, data.length, null); mPhoto = BitmapFactory.decodeByteArray(data, 0, data.length, null);
PicturePreview mPicPreview = new PicturePreview(getActivity().getBaseContext(), mPhoto); PicturePreview mPicPreview = new PicturePreview(getActivity().getBaseContext(), mPhoto, facing);
mPicPreview.setId(R.id.pic_preview); mPicPreview.setId(R.id.pic_preview);
mCameraLayout.addView(mPicPreview); mCameraLayout.addView(mPicPreview);
@@ -213,7 +213,7 @@ public class CameraFragment extends Fragment implements PostUploader.PostUploadL
PicturePreview.filterPrev(); PicturePreview.filterPrev();
PicturePreview mPicPreview = new PicturePreview(getActivity().getBaseContext(), mPhoto); PicturePreview mPicPreview = new PicturePreview(getActivity().getBaseContext(), mPhoto, facing);
mPicPreview.setId(R.id.pic_preview); mPicPreview.setId(R.id.pic_preview);
mCameraLayout.addView(mPicPreview); mCameraLayout.addView(mPicPreview);
@@ -231,7 +231,7 @@ public class CameraFragment extends Fragment implements PostUploader.PostUploadL
PicturePreview.filterNext(); PicturePreview.filterNext();
PicturePreview mPicPreview = new PicturePreview(getActivity().getBaseContext(), mPhoto); PicturePreview mPicPreview = new PicturePreview(getActivity().getBaseContext(), mPhoto, facing);
mPicPreview.setId(R.id.pic_preview); mPicPreview.setId(R.id.pic_preview);
mCameraLayout.addView(mPicPreview); mCameraLayout.addView(mPicPreview);

View File

@@ -9,6 +9,7 @@ import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter; import android.graphics.ColorMatrixColorFilter;
import android.graphics.Matrix; import android.graphics.Matrix;
import android.graphics.Paint; import android.graphics.Paint;
import android.hardware.Camera;
import android.util.Log; import android.util.Log;
import android.view.SurfaceHolder; import android.view.SurfaceHolder;
import android.view.SurfaceView; import android.view.SurfaceView;
@@ -26,14 +27,24 @@ public class PicturePreview extends SurfaceView implements SurfaceHolder.Callbac
private static int currentFilter = FILTER_NONE; private static int currentFilter = FILTER_NONE;
int facing;
int rotate;
Bitmap picture; Bitmap picture;
Bitmap filterPicture; Bitmap filterPicture;
public PicturePreview(Context context, Bitmap bmp) { public PicturePreview(Context context, Bitmap bmp, int facing) {
super(context); super(context);
setWillNotDraw(false); setWillNotDraw(false);
picture = Bitmap.createScaledBitmap(bmp, bmp.getWidth() / 2, bmp.getHeight() / 2, false); this.facing = facing;
if (((Integer)facing).equals(Camera.CameraInfo.CAMERA_FACING_FRONT)) {
picture = Bitmap.createBitmap(bmp);
rotate = 270;
} else {
picture = Bitmap.createScaledBitmap(bmp, bmp.getWidth() / 2, bmp.getHeight() / 2, false);
rotate = 90;
}
Log.d(TAG, "PicturePreview: " + bmp.getWidth() + " " + bmp.getHeight()); Log.d(TAG, "PicturePreview: " + bmp.getWidth() + " " + bmp.getHeight());
} }
@@ -47,8 +58,8 @@ public class PicturePreview extends SurfaceView implements SurfaceHolder.Callbac
switch (currentFilter) { switch (currentFilter) {
case FILTER_NONE: case FILTER_NONE:
canvas.drawBitmap(rotate(picture, 90), 0, 0, null); canvas.drawBitmap(rotate(picture, rotate), 0, 0, null);
filterPicture = rotate(picture, 90); filterPicture = rotate(picture, rotate);
break; break;
case FILTER_SEPIA: case FILTER_SEPIA:
filterPicture = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888); filterPicture = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888);
@@ -62,8 +73,8 @@ public class PicturePreview extends SurfaceView implements SurfaceHolder.Callbac
filter = new ColorMatrixColorFilter(cm); filter = new ColorMatrixColorFilter(cm);
paint.setColorFilter(filter); paint.setColorFilter(filter);
saveCanvas.drawBitmap(rotate(picture, 90), 0, 0, paint); saveCanvas.drawBitmap(rotate(picture, rotate), 0, 0, paint);
canvas.drawBitmap(rotate(picture, 90), 0, 0, paint); canvas.drawBitmap(rotate(picture, rotate), 0, 0, paint);
break; break;
case FILTER_BW: case FILTER_BW:
filterPicture = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888); filterPicture = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888);
@@ -73,8 +84,8 @@ public class PicturePreview extends SurfaceView implements SurfaceHolder.Callbac
filter = new ColorMatrixColorFilter(cm); filter = new ColorMatrixColorFilter(cm);
paint.setColorFilter(filter); paint.setColorFilter(filter);
saveCanvas.setBitmap(filterPicture); saveCanvas.setBitmap(filterPicture);
saveCanvas.drawBitmap(rotate(picture, 90), 0, 0, paint); saveCanvas.drawBitmap(rotate(picture, rotate), 0, 0, paint);
canvas.drawBitmap(rotate(picture, 90), 0, 0, paint); canvas.drawBitmap(rotate(picture, rotate), 0, 0, paint);
break; break;
case FILTER_NEG: case FILTER_NEG:
filterPicture = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888); filterPicture = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888);
@@ -88,8 +99,8 @@ public class PicturePreview extends SurfaceView implements SurfaceHolder.Callbac
filter = new ColorMatrixColorFilter(cm); filter = new ColorMatrixColorFilter(cm);
paint.setColorFilter(filter); paint.setColorFilter(filter);
saveCanvas.setBitmap(filterPicture); saveCanvas.setBitmap(filterPicture);
saveCanvas.drawBitmap(rotate(picture, 90), 0, 0, paint); saveCanvas.drawBitmap(rotate(picture, rotate), 0, 0, paint);
canvas.drawBitmap(rotate(picture, 90), 0, 0, paint); canvas.drawBitmap(rotate(picture, rotate), 0, 0, paint);
break; break;
} }