是否有可能做到这一点?从选择图像到拍摄图像

Is it possible to do this? From selecting image to capturing image

是否可以在不保存 phone 的情况下捕获图像并在 imageview 上显示它?最好从 API 级别 18 开始工作。目前我的代码:

private void ImageSelection()
{
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(intent, IMAGE_REQUEST);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == IMAGE_REQUEST && resultCode == RESULT_OK && data != null)
    {
        Uri FilePath = data.getData();
        try {

            bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), FilePath);
            mImageView.setImageBitmap(bitmap);
            mImageView.setVisibility(View.VISIBLE);
            mEditText.setVisibility(View.VISIBLE);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
        if (TextUtils.isEmpty(mEditText.getText())){
            mEditText.setError("Must!");
        }

}

用相机应用拍照

将操作委派给其他应用程序的 Android 方法是调用描述您想要完成的操作的 Intent。这个过程涉及三个部分:

  1. 意图本身
  2. 一个启动外部的调用Activity
  3. 当焦点 return 到您的 activity
  4. 时处理图像数据的一些代码

这是一个调用 intent 来拍摄照片的函数。

static final int REQUEST_IMAGE_CAPTURE = 1;

private void dispatchTakePictureIntent() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
    }
}

请注意,startActivityForResult() 方法受调用 resolveActivity() 的条件保护,return是第一个 activity 组件可以处理意图。执行此检查很重要,因为如果您使用任何应用都无法处理的意图调用 startActivityForResult(),您的应用将会崩溃。所以只要结果不为空,就可以安全地使用意图。

获取缩略图

如果简单的拍照功能不是您应用的终极目标,那么您可能希望从相机应用程序中取回图像并对其进行处理。

Android 相机应用程序将 return 发送到 onActivityResult() 的 Intent 中的照片编码为 extras 中的小位图,在键 [=43= 下].以下代码检索此图像并将其显示在 ImageView 中。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        Bundle extras = data.getExtras();
        Bitmap imageBitmap = (Bitmap) extras.get("data");
        mImageView.setImageBitmap(imageBitmap);
    }
}

Check official documentation 以获得更好的理解。

希望对您有所帮助。