Android的定制相机拍摄的照片在画廊中未示出(Android custom camera pho

2019-09-29 12:32发布

我创建定制的Android相机布局。

我从使用的信息http://developer.android.com/guide/topics/media/camera.html#basics 。 Everithing工作得很好,除了一两件事。

照片没有在手机图库中。 该梅托德是:

private Camera.PictureCallback cameraCallback = new Camera.PictureCallback() {

    @Override
    public void onPictureTaken(byte[] data, Camera camera) {

        File pictureFile = getOutputMediaFile();
        if (pictureFile == null){
            Log.d(Values.APPLICATION_TAG + ACTIVITY_TAG, "Error creating media file, check storage permissions: ");
            return;
        }

        try {
            FileOutputStream fos = new FileOutputStream(pictureFile);
            fos.write(data);
            fos.flush();
            fos.close();
            createPhotoAndShowPreview(Uri.fromFile(pictureFile));
        } catch (FileNotFoundException e) {
            Log.d(Values.APPLICATION_TAG + ACTIVITY_TAG, "File not found: " + e.getMessage());
        } catch (IOException e) {
            Log.d(Values.APPLICATION_TAG + ACTIVITY_TAG, "Error accessing file: " + e.getMessage());
        }
    }
};

private static File getOutputMediaFile(){

    File galleryDir = new File(Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES), "MyCameraApp"); 
    if (!galleryDir.exists()) {
        if (!galleryDir.mkdir())
        {
            Log.d(Values.APPLICATION_TAG, "failed to create directory");
            return null;
        }
    }

    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
    File mediaFile;
    mediaFile = new File(galleryDir.getPath() + File.separator +
            "gfranq_"+ timeStamp + ".jpg");

    return mediaFile;
}

方法createPhotoAndShowPreview(Uri.fromFile(PictureFile的)); 做工精细,文件在运行时存在,我可以使用它,但是当我退出该应用程序没有在图片库的文件。 我使用的文件管理器来检查文件是否被删除,但它不会被删除,退出应用程序后,它的存在,但系统不能识别它是一个图像。

更新:照片在画廊appered我连我的电话到我的电脑后。 但是,新的照片仍然不会出现在我直到连接画廊和断开我的手机到电脑中。 重启手机具有同样的效果。

Answer 1:

您需要发送一个广播:

context.sendBroadcast(新意图(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,Uri.fromFile(镜像文件)));



Answer 2:

MediaScannerConnection.scanFile(this, new String[]{file.toString()}, null,
            new MediaScannerConnection.OnScanCompletedListener() {
                public void onScanCompleted(String path, Uri uri) {
                    Log.i("ExternalStorage", "Scanned " + path + ":");
                    Log.i("ExternalStorage", "-> uri=" + uri);
                }
            });


文章来源: Android custom camera photos not shown in gallery