使用ACTION_IMAGE_CAPTURE从相机拍摄照片后如何跳过或避免“重拍和查看”选项

时间:2016-07-26 04:52:58

标签: java android camera android-camera android-camera-intent

我想在单击照片时显示图像并在我的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

5 个答案:

答案 0 :(得分:4)

实际上确认拍摄照片非常有用。但是,如果您真的不想拥有它,则必须在应用程序中使用SurfaceView并在此处显示相机流。有一些示例如何做,例如考虑检查one

答案 1 :(得分: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);
  }   
}

答案 2 :(得分:2)

你无法避免那个屏幕。原因是当您使用新的MediaStore.ACTION_IMAGE_CAPTURE时,您正在使用其他相机应用程序来单击图像。显示此屏幕可能是该屏幕的默认功能。根据相机应用,此屏幕在不同设备中会有所不同。

所以要摆脱这一点,你唯一能做的就是实现你的自定义相机,而不是使用默认的相机应用程序。

答案 3 :(得分:1)

根据默认的相机应用程序,您无法违反该功能。您可以使用SurfaceView捕获应用程序内的图像,而不是。请查看此answer thread

可能这个链接会对你有帮助。

谢谢

答案 4 :(得分:0)

将“ android.intent.extra.quickCapture”用于图片用途。

// File ImagePickerModule.java#248
cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra("android.intent.extra.quickCapture",true);

有关详细信息,请参见https://github.com/react-native-community/react-native-image-picker/issues/647