2014-07-03 50 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()以获取要存储在数据库中的路径。