[英]How to set Android default camera app for portrait orientation only
在我的android应用程序中,我为此使用Android default camera
捕获照片,下面使用了以下代码。捕获照片后,我已将Image显示为全屏模式下的另一个活动。如果以portrait
模式捕获了图像,则可以设置整个图像进入全屏模式。 显示完图像后,它可以执行我的操作。但是,如果我从landscape
捕获照片,则所拍摄的图像将在屏幕上拉伸。 因此我只想在人像模式下不横向拍摄照片。 所以我怎么只能将相机应用锁定为人像。
String fileName = "Camera_Example.jpg";
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
values.put(MediaStore.Images.Media.DESCRIPTION,"Image capture by camera");
imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION,ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
startActivityForResult(intent,CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
AndroidManifest.xml
<activity
android:name=".TestActivity"
android:screenOrientation="portrait"
android:configChanges="orientation"
android:theme="@android:style/Theme.NoTitleBar" >
</activity>
人像拍摄的照片
全屏人像拍摄的照片
风景照
全屏拍摄的风景照片
如何锁定仅用于人像的相机应用程序
你不知道 您没有编写相机应用程序,因为有成百上千个相机应用程序。 由相机应用程序和用户来决定方向。
除了:
在许多设备上,纵向模式下您将遇到相同的问题
您的风景照片也似乎被拉长了,尽管没有那么剧烈
但是,如果我从风景中捕获照片,则所拍摄的图像将在屏幕上拉伸
您有一个,也许还有两个问题:
您没有考虑照片的方向,因此正在加载风景照片,就像它是人像一样。
您的ImageView
或其父级可能配置错误。 如果要保持照片的长宽比, 并且希望ImageView
填充某个区域,则ImageView
需要具有相同的长宽比。
如果您真的只想以人像模式拍照,则除了解决上面提到的问题之外,您还需要自己使用android.hardware.Camera
,而不是启动第三方相机应用程序。
尝试使用以下代码旋转相机:
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
camera = Camera.open();
camera.setDisplayOrientation(90); // camera portrait oriantation
try {
camera.setPreviewDisplay(holder);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.