I am using this code (given below) to take picture on button click, the picture is taken successfully but it is in landscape mode, I have set camera orientation to portrait using params.set("orientation", "portrait");
but this is not working. I have also tried camera.setDisplayOrientation(90);
but no change in result. So please help how can I take picture in portrait mode?
My Code:
package com.example.appdeveloperahmed.ct2;
import android.hardware.Camera;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Display;
import android.view.Surface;
import android.view.SurfaceView;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
@SuppressWarnings("deprecation")
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.button);
b.setOnClickListener(this);
}
@Override
public void onClick(View v) {
takeSnapShots();
}
private void takeSnapShots() {
SurfaceView surface = new SurfaceView(this);
Camera camera = null;
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
int cameraCount = Camera.getNumberOfCameras();
for (int camIdx=0; camIdx < cameraCount; camIdx++) {
Camera.getCameraInfo(camIdx, cameraInfo);
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT)
camera = Camera.open(camIdx);
}
if(camera==null)
camera = Camera.open();
try {
camera.setPreviewDisplay(surface.getHolder());
}
catch (IOException e) {
e.printStackTrace();
}
Camera.Parameters parameters = camera.getParameters();
parameters.set("orientation", "portrait");
camera.setParameters(parameters);
camera.startPreview();
camera.takePicture(null, null, jpegCallback);
}
Camera.PictureCallback jpegCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
FileOutputStream outStream = null;
try {
String dir_path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/picFolder/";
outStream = new FileOutputStream(dir_path+ File.separator+"sl_img"+"1"+".jpg");
outStream.write(data);
outStream.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
finally {
camera.stopPreview();
camera.release();
camera = null;
Toast.makeText(getApplicationContext(), "Image snapshot Done",Toast.LENGTH_LONG).show();
}
}
};
}