捕获的图像未显示在库中,但已成功存储在SD卡中

ios*_*ner 6 android image android-gallery android-mediascanner

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

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

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

这里mCameraClient将使用UVC Camera进行处理并捕获图像并存储在该路径中,它将回调方法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.
                }
            });
        }
    };
Run Code Online (Sandbox Code Playgroud)

然后我从图像按钮调用图库 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
                }
Run Code Online (Sandbox Code Playgroud)

如果过滤成功.

    @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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

这里我的问题是在库中所有捕获的图像都没有显示.

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

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

请帮帮我.

编辑1:

我观察过一件事,当我拍摄并保存图像时,它没有在画廊中显示,但是经过一段时间如2-3小时它出现在画廊中. 我想知道为什么这样的发生?

谢谢

小智 8

在捕获图像后放入这行代码并将其保存到SD卡.

File image_path="your image path";
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,Uri.fromFile(image_path)));
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助你......!