如何在使用ACTION_IMAGE_CAPTURE拍照后跳过或避免“重新拍摄和审核”选项

13

当我点击照片时,我想展示图像并将其设置在我的 ImageView 中,而不需要用户选择是或否。

我已经搜索过了,也非常清楚相机应用程序本身可以让你查看/重新拍摄图像,并且一旦接受了图像,该活动就会显示它。但是,我想做到不需要查看/重新拍摄即可显示该图像的操作.....

我正在尝试这段代码很好

初始化

  Uri mImageCaptureUri;

点按按钮操作

  Intent intent      = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_SCREEN_ORIENTATION, ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    File file        = new File(Environment.getExternalStorageDirectory(),
            "tmp_avatar_" + String.valueOf(System.currentTimeMillis()) + ".jpg");
    mImageCaptureUri = Uri.fromFile(file);

    try {

        intent.putExtra(MediaStore.AUTHORITY, true);
        intent.putExtra("return-data", true);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
        startActivityForResult(intent, PICK_FROM_CAMERA);
    } catch (Exception e) {
        e.printStackTrace();
    }

onActivityResult

  @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

        Bitmap bitmap = null;


        mPath = mImageCaptureUri.getPath();

        System.out.println("THE PAtH:_" + mPath);

        BitmapFactory.Options o2 = new BitmapFactory.Options();
        bitmap = BitmapFactory.decodeFile(mPath, o2);
        ivSelfie.setImageBitmap(bitmap);

    
}
当我点击照片后,会弹出一个屏幕让我选择是或否......但我的要求是仅在点击并设置时直接将其设置为活动显示器上的ImageView,而不是选择评论/重拍任务。

enter image description here


我不认为有一个解决方法,但是你可以不使用相机意图,而是在你的应用程序中使用一个帧布局并启动相机。这样做会更容易一些。 - Geet Choubey
是的,我知道,但我的要求是仅使用内置摄像头…… - Arjun saini
即使在 WhatsApp 中,在以前的版本中,当他们使用股票相机应用程序时,甚至在拍摄照片后也有相同的确认选项。 - Geet Choubey
5个回答

5

实际上确认已拍照片是非常有用的。但是,如果您真的不想要它,您需要在应用程序中使用SurfaceView并在此处显示摄像机流。有很多例子可以参考,例如考虑查看这个


感谢@Divers先生....我正在使用Oppo手机,正如您所知道的,它是自拍专家,因此我的要求是在其内置相机图像上进行工作...... - Arjun saini
@Er.Arjunsaini 老实说,我不知道你在说什么,但是似乎无法满足你的要求。 - Divers
谢谢...我也...不想那样做...但我正在努力满足我的要求。 - Arjun saini

3
使用方法setImageURI(),它将从URI获取位图并为您设置它。
是的,它会设置图像,无论用户是否按下okcancel,因为在启动意图时,您的文件存在于给定路径上。
 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == PICK_FROM_CAMERA) {
        // only one line code
        ivSelfie.setImageURI(mImageCaptureUri);
  }   
}

这与以下问题是否相关 - “当我点击照片时,我会进入选择是或否的屏幕......?” - Divers
感谢Sohail Zahid先生的回答......我也在尝试这个,但我想避免复习/重做的功能...... - Arjun saini
@Er.Arjunsaini 的重新拍摄/复查功能属于相机应用程序,您无法控制它们。相机应用程序界面只会在“取消”或“确定”事件发生时向我们提供结果。 - Sohail Zahid
@Sohail Zahid..... 谢谢.... 我也在寻找关于这个的信息...但是没有得到什么,所有人都说了你所说的话... - Arjun saini
@Er.Arjunsaini,你好,有些事情超出了我们的控制范围,所以请寻找其他解决方案。祝编码愉快。 - Sohail Zahid
@Sohail Zahid....我有更多的想法,我可以使用自拍套件来审查图像吗??使用自拍杆拍摄照片,并且也可以使用自拍杆进行审查....?? - Arjun saini

2

您无法避免那个屏幕。原因是当您使用新的MediaStore.ACTION_IMAGE_CAPTURE时,您正在使用不同的相机应用程序来拍摄图像。显示此屏幕可能是默认功能。该屏幕在不同设备上将有所不同,具体取决于相机应用程序。

因此,为了摆脱它,您唯一能做的就是实现自定义相机而不是使用默认相机应用程序。


1
根据默认相机应用程序,您无法突破该功能。相反,您可以使用SurfaceView在应用程序内捕获图像。请查看此答案线程
也许这个链接会对您有所帮助。
谢谢。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接