Android Native Camera App Orientation拍摄自拍照的问题

时间:2016-04-13 11:36:35

标签: android camera android-camera android-orientation android-camera-intent

按照Android文档编写用于通过意图启动本机相机的代码:
http://developer.android.com/training/camera/photobasics.html

问题:我正在使用Andorid Native Camera App从我的应用拍摄照片,并按上述链接(MediaStore.ACTION_IMAGE_CAPTURE)中的意图启动并启动相机成功。当我点击Native应用程序的相机按钮拍照时,图像预览镜像同时自拍(左图像显示为右),自拍用户讨厌,因为图像预览不是他点击的内容。
第二 - 一旦点击图像,它会显示图像预览并等待用户输入以接受或拒绝图像 一旦接受图像,OnStartActivityResult(如上面链接中所述)功能接收调用并将图像保存到图库。这里奇怪的是:图像被反转180度,然后保存,这是非常奇怪的行为 最后,这里有两个问题:图像预览用户批准之前的镜像问题以及保存图像反转问题(180度反转)。

设备:三星A6 Edge
Android: 5.1
相机在清单文件中:Android.hardware.camera2,因为不推荐使用相机 请告知我如何解决以上两个问题。

另外 - 我有另一个疑问:我应该使用Android原生相机应用程序还是使用Camera Framework编写代码并启动自定义相机?我的要求只是点击图片并显示预览并以正确的方向保存。经过大量搜索,我很怀疑 - 原生相机应用可以解决这些问题吗?但是你的专家建议可以为此提供帮助。

对此的任何快速支持和指导表示高度赞赏。提前致谢 ! 这是代码:

public void triggerCamera() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    File imagePath = AppPhotoHelper.getOutputMediaFile();

    // Continue only if the File was successfully created
    if (imagePath != null) {
        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                Uri.fromFile(imagePath));
        takePictureIntent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION, ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        this.setImagePath(imagePath);
        this.startActivityForResult(takePictureIntent, CAMERA_PIC_REQUEST);
    }
}

onActivityResult函数:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CAMERA_PIC_REQUEST) {
        if (resultCode == RESULT_OK ) {
           //AppPhotoHelper is my class to show image in gallery
            AppPhotoHelper.displayInGallery(this.getImagePath(), this);
            //Image captured and stored in gallery ... camera invoked for next shot after doing some business processing
            this.triggerCamera();
        }
        else if (resultCode == RESULT_CANCELED) {
            return;
        }
        else {
            return;
        }
    }

}

1 个答案:

答案 0 :(得分:0)

正如我post中所述,原生相机应用程序因设备而异。您是否使用其他设备或模拟器尝试了代码?我发布了一个library on github来解决许多问题,包括各种设备的图像方向。请随意查看,在您的设备上运行示例代码,并检查它是否适用于您的用例。