我在我的应用中使用相机。我只是使用intent
启动相机
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(cameraIntent, 101);
捕获的图像自动进入landscape view
。如何让camera
在portrait view
答案 0 :(得分:12)
如果设备有v2.2
或更高版本,您可以使用camera.setDisplayOrientation(90)
将相机方向旋转为纵向。在低于v2.2的设备中,相机仅以横向显示,因此图像将以横向显示。查看这些帖子Using Camera in Portrait Orientation,Camera is wrong unless keyboard is open。
答案 1 :(得分:2)
试试这个。
Parameters param = mCamera.getParameters();
switch(mDisplay.getRotation()){
case Surface.ROTATION_0:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO){
mCamera.setDisplayOrientation(90);
Log.d("Rotation_0", "whatever");
}
else{
Log.d("Rotation_0", "whatever");
param.setRotation(90);
mCamera.setParameters(param);
}
break;
case Surface.ROTATION_90:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO){
mCamera.setDisplayOrientation(0);
Log.d("Rotation_0", "whatever");
}
else{
Log.d("Rotation_90", "whatever");
param.setRotation(0);
mCamera.setParameters(param);
}
break;
}
答案 2 :(得分:1)
此处,此代码适用于Android相机应用程序[纵向模式]中支持的所有类型的方向。
int rotation = this.getWindowManager().getDefaultDisplay().getRotation();
int degrees = 0;
switch (rotation) {
case Surface.ROTATION_0:
degrees = 0;
break;
case Surface.ROTATION_90:
degrees = 90;
break;
case Surface.ROTATION_180:
degrees = 180;
break;
case Surface.ROTATION_270:
degrees = 270;
break;
}