在相机意图中显示图片库

Posted

技术标签:

【中文标题】在相机意图中显示图片库【英文标题】:Show image gallery in camera intent 【发布时间】:2018-08-27 16:47:54 【问题描述】:

我正在开发一项功能,用户可以在其中拍照并从图库中进行选择。这基本上是它开始并继续将图像保存在数据库中的地方。

 private void showPictureDialog()
        AlertDialog.Builder pictureDialog = new AlertDialog.Builder(this);
        pictureDialog.setTitle("Select Action");
        String[] pictureDialogItems = 
                "Select photo from gallery",
                "Capture photo from camera" ;
        pictureDialog.setItems(pictureDialogItems,
                new DialogInterface.OnClickListener() 
                    @Override
                    public void onClick(DialogInterface dialog, int which) 
                        switch (which) 
                            case 0:
                                choosePhotoFromGallary();
                                break;
                            case 1:
                                takePhotoFromCamera();
                                break;
                        
                    
                );
        pictureDialog.show();
    

但是,我想让用户体验更好。我想跳过用户选择其中一个选项(从画廊或相机)的对话框,而是在相机意图中显示画廊。类似的东西:

我希望你明白我的意思。谢谢:)

【问题讨论】:

【参考方案1】:
    获取所有图片

public List<File> getAllShownImagesPath(Context context) 
        //get all images
        String[] columns = MediaStore.Images.Media.DATA, MediaStore.Images.Media.DATE_ADDED, MediaStore.Images.Media.SIZE;
        List<File> result = new ArrayList<>();
        File f = null;
        final Cursor cursor = context.getContentResolver().
                query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, // Specify the provider
                        columns, // The columns we're interested in
                        null, // A WHERE-filter query
                        null, // The arguments for the filter-query
                        MediaStore.Images.Media.DATE_ADDED + " DESC"
                );

        if (cursor != null) 
            cursor.moveToFirst();
            for (int r = 0; r < cursor.getCount(); r++, cursor.moveToNext()) 
                int i = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.SIZE));
                //int l = cursor.getString(1).length();
                final int image_path_col = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                if (i > 0) 
                    f = new File(cursor.getString(image_path_col));
                    if (f.length() > 0) 
                        result.add(f);
                    
                
            
            cursor.close();
        
        return result;
    
    将所有图片添加到recyclerview或listview中

【讨论】:

如何在相机意图中显示图像列表? 您应该为带有recyclerview的相机自定义布局包含所有图像,有关自定义相机布局的示例:***.com/questions/8543244/custom-camera-android

以上是关于在相机意图中显示图片库的主要内容,如果未能解决你的问题,请参考以下文章

为啥我没有收到来自我的相机意图的任何图片(在 Android 中)

Android将图片旋转90度(由相机拍摄)[重复]

android方向 - 意图问题(相机)

来自画廊/相机意图的图片方向[重复]

单击图片后,图像捕获上的 onActivityResult 不显示确定按钮

在 onActivityResult 中使用相机意图捕获的图片文件一段时间为空