0
私はこのコードを使用してボタンをクリックすると画像が正常に撮影されますが、横向きモードであるため、params.set("orientation", "portrait");
を使用してカメラの向きをポートレートに設定しました。働いていない。私もcamera.setDisplayOrientation(90);
を試しましたが、結果に変更はありません。ポートレートモードで写真を撮るにはどうすればいいですか?カメラの向きをポートレートに設定しない
マイコード:
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();
}
}
};
}
多分あなたのデバイスは古すぎますか? http://stackoverflow.com/a/8516211/3836142 –
私のデバイスはSamsung Tab E –
よくある質問または重複した質問がこのリンクをお試しください。 http://stackoverflow.com/a/10218309/5860777 –