Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从“多媒体资料”中选择图像时显示图像,但从相机拍摄时不显示图像_Java_Android - Fatal编程技术网

Java 从“多媒体资料”中选择图像时显示图像,但从相机拍摄时不显示图像

Java 从“多媒体资料”中选择图像时显示图像,但从相机拍摄时不显示图像,java,android,Java,Android,按下按钮后,DispatchTakePictureContent()允许用户在拍照或四次从多媒体资料中选择一张照片之间进行选择。这四个URI存储在ArrayList中,这四个URI应显示在各自的ImageView中。我遇到的问题是,当我“捕获图片”时,它不会立即显示在ImageView中;但我从画廊里选的照片确实如此 我拍摄的图片已正确保存,下次按下按钮时,可以在“从图库中选择”中找到。有人能看出我做错了什么吗 takePictureContent(): 与其循环4次,为什么不让每个imageV

按下按钮后,
DispatchTakePictureContent()
允许用户在拍照或四次从多媒体资料中选择一张照片之间进行选择。这四个URI存储在ArrayList中,这四个URI应显示在各自的ImageView中。我遇到的问题是,当我“捕获图片”时,它不会立即显示在ImageView中;但我从画廊里选的照片确实如此

我拍摄的图片已正确保存,下次按下按钮时,可以在“从图库中选择”中找到。有人能看出我做错了什么吗

takePictureContent():


与其循环4次,为什么不让每个imageView都成为一个OnClickListener,一个接一个地获取图像呢?

试试这个,这对我很有用

public Uri captureImage() {
    Intent chooserIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (chooserIntent.resolveActivity(getPackageManager()) != null) {
        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.Media.TITLE, "Image File name");
        Uri takenImageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
        Intent intentPicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        intentPicture.putExtra(MediaStore.EXTRA_OUTPUT, takenImageUri);
        startActivityForResult(intentPicture, MyConstants.REQUEST_IMAGE_CAPTURE);
        return takenImageUri;
    }
    return null;
}


public String getRealPathFromURI(Uri contentUri){
    try {
        String[] proj = {MediaStore.Images.Media.DATA};
        Cursor cursor = managedQuery(contentUri, proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }
    catch (Exception e){
        return contentUri.getPath();
    }
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK && data != null) {
        switch (requestCode){
            case MyConstants.REQUEST_IMAGE_CAPTURE:
                if (takenImageUri != null) {
                    Uri imagePath =getRealPathFromURI(takenImageUri,this));
                }
        }
    }
}

我很欣赏这个主意!但我在问题中概述的情景与我在活动中实际做的事情类似。功能基本上是一样的,所以这个问题的答案将帮助我了解我的实际情况。这允许用户在拍照或选择照片之间进行选择?
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            if (requestCode == REQUEST_HAPPY_PHOTO || requestCode == REQUEST_SURPRISED_PHOTO || requestCode == REQUEST_AFRAID_PHOTO ||
                    requestCode == REQUEST_UPSET_PHOTO || requestCode == REQUEST_SAD_PHOTO) {
                final boolean isCamera;
                if (data == null) {
                    isCamera = true;
                } else {
                    final String action = data.getAction();
                    if (action == null) {
                        isCamera = false;
                    } else {
                        isCamera = action.equals(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                    }
                }
                Uri selectedImageUri;
                if (isCamera) {
                    selectedImageUri = outputFileUri;
                } else {
                    selectedImageUri = data == null ? null : data.getData();
                }
                //Log.d("doing ids", "right before id");
                //Log.d("doing ids", "id is " + id);
                if(requestCode == REQUEST_HAPPY_PHOTO) {
                    //Log.d("doing ids", "in happy");
                    happyList.add(selectedImageUri);
                }
                if(requestCode == REQUEST_SURPRISED_PHOTO) {
                    //Log.d("doing ids", "in surprised");
                    surprisedList.add(selectedImageUri);
                }
                if(requestCode == REQUEST_AFRAID_PHOTO) {
                    //Log.d("doing ids", "in surprised");
                    afraidList.add(selectedImageUri);
                }
                if(requestCode == REQUEST_UPSET_PHOTO) {
                    //Log.d("doing ids", "in surprised");
                    upsetList.add(selectedImageUri);
                }
                if(requestCode == REQUEST_SAD_PHOTO) {
                    //Log.d("doing ids", "in surprised");
                    sadList.add(selectedImageUri);
                }
            }
        }
    }
public Uri captureImage() {
    Intent chooserIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (chooserIntent.resolveActivity(getPackageManager()) != null) {
        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.Media.TITLE, "Image File name");
        Uri takenImageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
        Intent intentPicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        intentPicture.putExtra(MediaStore.EXTRA_OUTPUT, takenImageUri);
        startActivityForResult(intentPicture, MyConstants.REQUEST_IMAGE_CAPTURE);
        return takenImageUri;
    }
    return null;
}


public String getRealPathFromURI(Uri contentUri){
    try {
        String[] proj = {MediaStore.Images.Media.DATA};
        Cursor cursor = managedQuery(contentUri, proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }
    catch (Exception e){
        return contentUri.getPath();
    }
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK && data != null) {
        switch (requestCode){
            case MyConstants.REQUEST_IMAGE_CAPTURE:
                if (takenImageUri != null) {
                    Uri imagePath =getRealPathFromURI(takenImageUri,this));
                }
        }
    }
}