2016-07-23 76 views
0

我在Android的編程初學者,我只是想顯示通過相機拍攝的圖像,這裏是我的代碼位圖是返回NULL在Android的

private File createImageFile() throws IOException { 
    // Create an image file name 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    String imageFileName = "JPEG_" + timeStamp + "_"; 
    File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); 
    File image = File.createTempFile(
      imageFileName, /* prefix */ 
      ".jpg",   /* suffix */ 
      storageDir  /* directory */ 
    ); 

    // Save a file: path for use with ACTION_VIEW intents 
    mCurrentPhotoPath = "file:" + image.getAbsolutePath(); 
    return image; 
} 

private void dispatchTakePictureIntent() { 
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    // Ensure that there's a camera activity to handle the intent 
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
     // Create the File where the photo should go 
     File photoFile = null; 
     try { 
      photoFile = createImageFile(); 
     } catch (IOException ex) { 
      // Error occurred while creating the File 
     } 
     // Continue only if the File was successfully created 
     if (photoFile != null) { 
      fileUri = FileProvider.getUriForFile(this, 
        "com.example.android.fileprovider", 
        photoFile); 
      takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); 
      startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO); 
     } 
    } 
} 
private void previewSavedImage() { 
    try { 
     // hide video preview 
     videoPreview.setVisibility(View.GONE); 

     imgPreview.setVisibility(View.VISIBLE); 

     // bimatp factory 
     BitmapFactory.Options options = new BitmapFactory.Options(); 

     // downsizing image as it throws OutOfMemory Exception for larger 
     // images 
     options.inSampleSize = 2; 

     String path = fileUri.getPath(); 

     //File img_file = new File(getFilesDir(), path); 



     final Bitmap bitmap = BitmapFactory.decodeFile(path, options); 

     imgPreview.setImageBitmap(bitmap); 
    } catch (NullPointerException e) { 
     e.printStackTrace(); 
    } 
} 

在上面的代碼中的位圖總是返回沒有因爲我的無法顯示圖像。我執行任務嗎?

+0

您會收到一個錯誤? –

+0

否,但「位圖」值爲空。 – Yogesh

+0

我試過這段代碼,但沒有拋出OutOfMemoryException異常。 我現在只是擔心android是否將捕獲的圖像存儲到指定的位置,我如何驗證? – Yogesh

回答

1

最後我解決了這個問題。問題是與mCurrentPhotoPath中的「file:」字符串,我只需要在decodeFile方法中使用它之前將其刪除。

Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath.replace("file:", "")); 
+0

那你爲什麼把它放在那裏?如果你需要的話,你應該使用「file://」。 – greenapps

+0

好趕上!這是對細節的關注。 –

+0

我會刪除它。我只是遵循文檔,並認爲它稍後可能會有用。 – Yogesh