【问题标题】:Captured image was not showing in gallery but it stored successfully in sdcard捕获的图像未显示在图库中,但已成功存储在 sdcard 中
【发布时间】:2015-08-03 16:35:50
【问题描述】:

我是 android 开发新手,我正在做一个小应用程序来使用 UVCCamera 捕获 USB Camrea 图像。

我已经使用UVCCamera 捕获图像并像这样存储在 sdcard 中

File filepath = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "IMG_"+getDateTime() + ".jpg");
mCameraClient.captureStill(filepath.toString()); 

这里 mCameraClient 将与 UVC 相机相结合并捕获图像并存储在该路径中,它会回调方法 onCaptureDone

@Override
        public void onCaptureDone(final String path) {
            // TODO Auto-generated method stub
            Log.e(TAG, "onCaptureDone  called");
            getActivity().runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    //Toast -- Images Saved.
                }
            });
        }
    };

然后我从图像按钮onClickListener 调用图库

    private MediaScannerConnection conn;

File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM));
    File[] mImagefile = folder.listFiles(new FilenameFilter() {
                    public boolean accept(File dir, String filename) {

                            return filename.endsWith(".jpg");
                    }
                });

                if (mImagefile.length > 0) {

                    SCAN_PATH = folder.toString() + "/"
                            + mImagefile[mImagefile.length -1].getName();
                    Log.e(TAG, "SCAN PATH = " + SCAN_PATH);

                    if (conn != null) {
                        conn.disconnect();
                    }

                    conn = new MediaScannerConnection(this, this);
                    conn.connect();
                } else {
                    //Toast -- No Images Available
                }

如果过滤成功。

    @Override
    public void onMediaScannerConnected() {
        // TODO Auto-generated method stub
        Log.e(TAG, "onMediaScannerConnected");
        ;
        conn.scanFile(SCAN_PATH, null);
    }

    @Override
    public void onScanCompleted(String path, Uri uri) {
        // TODO Auto-generated method stub
        try {
            Log.e(TAG, "OnCompleted  path = " + path);
            if (uri != null) {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(uri);
                startActivity(intent);
            }
        } finally {
            Log.e(TAG, "OnCompleted Disconnecting");
            conn.disconnect();
            conn = null;
        }
    }

我的问题是在画廊中所有捕获的图像都没有显示。

并且我已经检查了保存的目录,所有图像都已成功存储。[图像没有损坏,我已经验证]

我已经检查了默认图库应用程序,因为这些图像也没有显示。

请帮帮我。

编辑 1:

我观察到一件事,当我捕获并保存图像时,它没有显示在画廊中,但在 2-3 小时后它出现在画廊中。 我想知道为什么会这样?

谢谢

【问题讨论】:

标签: android image android-gallery android-mediascanner


【解决方案1】:

抓拍图片后放这行代码保存到sd卡。

File image_path="your image path";
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,Uri.fromFile(image_path)));

这里image_path是保存图片文件的路径

希望这对您有所帮助..!

【讨论】:

    【解决方案2】:

    您必须插入媒体库并为其创建缩略图。否则,在媒体库进行扫描之前(通常安排为每两小时扫描一次新图像),您将不会在库中看到它们。

    使用以下内容创建条目并为媒体库创建缩略图。

        String imageFilename = "IMG_";
        String originalPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath();
        String path = "";
    
    
        File filepath = new File(originalPath + imageFilename+".jpg");
        mCameraClient.captureStill(filepath.toString());
    
    
        try {
            newPath = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), originalPath, imageFilename, "Captuted Image");
        }catch (FileNotFoundException e) {
            e.printStackTrace();
        } 
    

    【讨论】:

      猜你喜欢
      • 2019-09-14
      • 1970-01-01
      • 2015-03-28
      • 1970-01-01
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      相关资源
      最近更新 更多