2012-12-29 96 views
1

我正在创建自定义android相机布局。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的));工作正常,该文件在运行时存在,我可以使用它,但是当我退出应用程序时,库中没有文件。我使用文件管理器来检查文件是否被删除,但是它没有被删除,它在退出应用程序后存在,但是系统不能识别它是一个图像。

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

回答

4

您需要发送一个广播:

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

0
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); 
       } 
      }); 
相关问题