2015-05-21 87 views
3

我使用拍照意圖拍照並將其保存到磁盤。該函數返回傳遞給拍照意向的圖像文件。三星Galaxy S5上相機圖像文件的路徑爲空

後來我用這個路徑讀取圖像文件。

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 = Environment.getExternalStorageDirectory(); 

     storageDir.mkdirs(); 
     File image = File.createTempFile(
       imageFileName, /* prefix */ 
       ".jpg",   /* suffix */ 
       storageDir  /* directory */ 
     ); 

     mPhotoPath = image.getAbsolutePath(); 
     return image; 
    } 

此代碼工作正常我的Nexus 4設備上,mPhotoPath包含一個有效的路徑。

在運行5.0 mPhotoPath的Samsung Galaxy S5(SM-G900V)上爲空。

+0

添加日誌項記錄'mPhotoPath',看看到底是什麼它包含。 –

+0

它包含null – bodagetta

+0

哦,嗯。在調用'mkdirs()'之前''storageDir.getAbsolutePath()'怎麼辦? –

回答

1

這是的一個實例遠程錯誤日誌完全不正確。我能夠訪問實際設備並在本地查看日誌。

路徑是而不是 null,因爲Crashlytics遠程日誌顯示。該錯誤是試圖加載一個太大的位圖。

調試錯誤是

Bitmap too large to be uploaded into a texture (2988x5312, max=4096x4096) 

code snippet幫我調整了位圖,我把它之前到ImageView的

ImageView iv = (ImageView)waypointListView.findViewById(R.id.waypoint_picker_photo); 
Bitmap d = new BitmapDrawable(ctx.getResources() , w.photo.getAbsolutePath()).getBitmap(); 
int nh = (int) (d.getHeight() * (512.0/d.getWidth())); 
Bitmap scaled = Bitmap.createScaledBitmap(d, 512, nh, true); 
iv.setImageBitmap(scaled); 
0

,因爲你沒有設備就很難說確切的問題,而是試圖改變您創建圖像文件的方式,可以是這樣做的:

File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), 
      (imageFileName + ".jpg")); 
    if (!file.exists()) { 
     try { 
      file.createNewFile(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    }//else if file exist you can delete it ,or change file name 
    mPhotoPath = Uri.fromFile(file); 
相關問題