2012-12-29 99 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); 
       } 
      }); 
相關問題