确定Android相机活动使用的相机

时间:2014-03-02 14:24:23

标签: java android camera android-camera

我正在编写一款依赖用户定期拍照的Android应用。据记载,如果从前置摄像头拍摄照片,Android将返回翻转旋转90度的图像。当这种情况发生时,我能够成功地重新调整图像的方向。问题是我不知道如何在使用前置摄像头时告诉。通过了解在拍照时使用前置摄像头的时间,我可以确定是否应该重新定位它。

有没有办法确定,最好在onActivityResult()中使用哪个相机?是否有其他练习用于帮助确定和修复图片方向?

这是我的相机活动启动代码。非常直截了当:

    private void startCameraIntent(String name) {
    try {
        String fileName = MontageConstants.APP_DATA_FOLDER + "/" + name + "/" + new Date().getTime() + ".jpg";
        Uri fileUri = Uri.fromFile(new File(fileName));

        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
        startActivityForResult(takePictureIntent, TAKE_PIC_ACTIVITY_REQUEST_CODE);
    } catch (Exception ex) {
        Toast.makeText(this, "Couldn't take picture", Toast.LENGTH_LONG).show();
    }
}

谢谢!

1 个答案:

答案 0 :(得分:1)

感谢Navjot Singh - 我在他发布的答案中找到了我需要的信息:How to rotate android device camera preview(libgdx)。实际上,您可以使用ExifInterface类在存储的JPEG文件中读取Exif标记。由于我在操作之前将图片存储到文件中,因此我只需插入文件路径,获取方向,然后相应地旋转/调整。

            ExifInterface ei = new ExifInterface(fileName);
            orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);