如何将 Android 默认相机应用设置为仅纵向
Posted
技术标签:
【中文标题】如何将 Android 默认相机应用设置为仅纵向【英文标题】:How to set Android default camera app for portrait orientation only 【发布时间】:2014-10-08 06:05:30 【问题描述】:在我的 android 应用程序中,我正在使用 Android default camera
拍摄照片,为此我使用了以下代码。拍摄照片后,我以全屏模式将该图像显示到另一个活动中。如果我以 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>
人像拍摄照片
人像拍摄照片全屏
风景拍摄照片
风景拍摄照片全屏
【问题讨论】:
【参考方案1】:如何才能将相机应用程序锁定为仅用于纵向
你没有。您没有编写相机应用程序,因为有数百甚至数千个相机应用程序。由相机应用和用户来处理方向。
另外:
在很多设备上,纵向模式下都会遇到同样的问题
您的风景照片似乎也被拉伸了,虽然没有那么明显
但是,如果我从风景中拍摄照片,拍摄的图像会在屏幕上拉伸
你有一个,也许是两个,问题:
您没有考虑照片的方向,因此您加载的是横向照片,就好像它是纵向的一样。
您的ImageView
或它的父级可能配置错误。如果您想保持照片的纵横比,并且您希望ImageView
填充某个区域,那么ImageView
需要具有相同的纵横比。
如果您真的只想在人像模式下拍照,除了解决我提到的问题外,您还需要自己使用android.hardware.Camera
,而不是启动第三方相机应用程序以上。
【讨论】:
【参考方案2】:尝试以下代码旋转相机:
@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();
【讨论】:
以上是关于如何将 Android 默认相机应用设置为仅纵向的主要内容,如果未能解决你的问题,请参考以下文章
即使我将应用程序清单设置为纵向,为啥我的 Android 相机预览仍显示横向?
即使我的活动在 android 2.3.1 中处于纵向模式,如何将 framelayout 设置为横向