【问题标题】: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();
    }

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

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

【问题讨论】:

    标签: android android-camera-intent


    【解决方案1】:
    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;
        }
    1. 将所有图片添加到recyclerview或listview中

    【讨论】:

    • 如何在相机意图中显示图像列表?
    • 您应该为带有recyclerview的相机自定义布局包含所有图像,有关自定义相机布局的示例:stackoverflow.com/questions/8543244/custom-camera-android
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多