2014-07-03 98 views
1

所以,這裏是我的問題......我一直在研究存儲一些地理定位數據的SQLite數據庫,我想從相機插入圖像。我讀過更好插入圖像路徑而不是圖像,但我找不到獲取圖像路徑的方式。從Android相機插入圖片到SQLite

這就是我已經得到的。

Camera.PictureCallback mPicture = new Camera.PictureCallback() { 
     @Override 
     public void onPictureTaken(byte[] data, Camera camera) { 
      File pictureFile = getOutputMediaFile(); 
      if (pictureFile == null) { 
       return; 
      } 
      try { 
       FileOutputStream fos = new FileOutputStream(pictureFile); 
       fos.write(data); 
       fos.close(); 


      } catch (FileNotFoundException e) { 

      } catch (IOException e) { 
      } 
     } 

    }; 

    public File getOutputMediaFile() { 

     File mediaStorageDir = new File(
       Environment 
         .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), 
       "MyCameraApp" 
     ); 
     if (!mediaStorageDir.exists()) { 
      if (!mediaStorageDir.mkdirs()) { 
       Log.d("MyCameraApp", "failed to create directory"); 
       return null; 
      } 
     } 
     // Create a media file name 
     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
     File mediaFile; 
     mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg"); 
     return mediaFile; 

    } 

謝謝!

回答

0
file.getAbsolutePath(); 

這麼簡單:)

所以在上下文中它可能是這個樣子

  try { 
       FileOutputStream fos = new FileOutputStream(pictureFile); 
       fos.write(data); 
       fos.close(); 

       saveFileLocation(pictureFile.getAbsolutePath); 

      } catch (FileNotFoundException e) { 

      } catch (IOException e) { 
      } 

其中saveFileLocation是一個函數,你作出這樣的所採取的路徑字符串,並將其保存到您的SQL數據庫。

+0

感謝您的快速回答!那麼你認爲我可以在我的getOutputMediaFile函數中添加這個嗎? – PFUser

+0

是的,你可以。但是,您首先要確保在保存文件時不會引發異常,否則您可能會將某個位置保存到您的數據庫,但由於某些錯誤而不存在該數據庫。另一個選擇是像在getOutputMediaFile函數中所說的那樣執行它,然後如果引發異常,請將其刪除。 – WIllJBD

+0

對不起,但我對此很新...當我把它放在我的函數上時,我無法從函數中取出字符串來打印它。 – PFUser

0

您可以執行mediaFile.getAbsolutePath()以獲取要存儲在數據庫中的路徑。