5

我想强制默认的安卓相机只在横向模式下拍照。我试过以下:

         Intent cameraIntent=new Intent("android.media.action.IMAGE_CAPTURE");
         File photo = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "Pic.jpg");
         cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
         cameraIntent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION, ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
         startActivity(cameraIntent);

但这仅适用于 2.1,不适用于以后。我只想让照片图像以横向模式保存。我不想使用任何图像处理,例如矩阵或自定义相机。

注意:我从将方向固定为“纵向”的活动中调用此意图

4

2 回答 2

3

在 androidmanifest.xml 中

<activity android:name="activity_name" android:screenOrientation="landscape" />

此活动将是您的图像捕捉活动。

于 2012-06-12T10:21:24.487 回答
0

使用ACTION_IMAGE_CAPTURE意图,您对实际驱动相机的应用程序的控制有限。您可以期望它遵守 Intent合同,但仅此而已。

可以发送标准 Intent 操作以使相机应用程序捕获图像并返回它。

调用者可能会传递一个额外的 EXTRA_OUTPUT 来控制该图像将被写入的位置。如果 EXTRA_OUTPUT 不存在,则在额外字段中将小尺寸图像作为位图对象返回。这对于只需要小图像的应用程序很有用。如果存在 EXTRA_OUTPUT,则将全尺寸图像写入 EXTRA_OUTPUT 的 Uri 值。从 LOLLIPOP 开始,这个 uri 也可以通过 setClipData(ClipData) 提供。如果使用这种方法,您仍然必须通过 EXTRA_OUTPUT 字段提供 uri 以与旧应用程序兼容。如果您没有设置 ClipData,它将在调用 startActivity(Intent) 时为您复制到那里。

注意:如果您的应用程序以 M 及以上为目标并声明为使用未授予的 CAMERA 权限,则尝试使用此操作将导致 SecurityException。

如果您有兴趣,您可以从此意图接收图像并将其强制旋转为横向。请注意,今天的许多相机应用程序都只能生成风景照片。

于 2016-01-06T11:27:21.600 回答