如何将 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 设置为横向

如何在surfaceview中将Android相机更改为人像?

如何制作只有 ipad 应用程序的肖像?

在 android 中设置显示方向后,相机相机预览不正确

Android相机以人像模式保存图片