【问题标题】:Insert Pictures from camera to SQLite in Android在 Android 中将图片从相机插入到 SQLite
【发布时间】:2014-08-24 20:09:48
【问题描述】:

所以这是我的问题...我一直在研究存储一些地理位置数据的 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;

    }

谢谢!

【问题讨论】:

    标签: android image sqlite path camera


    【解决方案1】:

    您可以通过mediaFile.getAbsolutePath() 获取您想要存储在数据库中的路径。

    【讨论】:

      【解决方案2】:
      file.getAbsolutePath();
      

      就这么简单:)

      所以在上下文中它可能看起来像这样

                 try {
                      FileOutputStream fos = new FileOutputStream(pictureFile);
                      fos.write(data);
                      fos.close();
      
                      saveFileLocation(pictureFile.getAbsolutePath);
      
                  } catch (FileNotFoundException e) {
      
                  } catch (IOException e) {
                  }
      

      其中 saveFileLocation 是您创建的函数,它获取路径字符串并将其保存到您的 sql 数据库中。

      【讨论】:

      • 感谢您的快速回答!那么你认为我可以在我的 getOutputMediaFile 函数中添加它吗?
      • 是的,你可以。但是,您首先要确保在保存文件时没有引发异常,否则您可能会在数据库中保存一个由于某些错误而不存在的位置。另一种选择是像您在 getOutputMediaFile 函数中所说的那样执行此操作,然后如果引发异常,请将其删除。
      • 抱歉打扰,但我对此很陌生...当我把它放在我的函数上时,我无法将字符串从函数中取出来打印它。
      • 我不确定你的意思,在getOutputMediaFile中你正在返回一个文件,这个文件仍然包含getAbsolutePath()的方法,你可以从中获取路径。还要确保您在清单中具有写入/读取权限。
      • 没问题!很高兴为您提供帮助!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      相关资源
      最近更新 更多