我怎么能从一个onActivityResult(int requestCode, int resultCode, Int



我正在做一个允许用户使用相机拍照的Android项目。

我的方法是这样的:

private void takePicture(){
        Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(camera, 1337);
    }

在我的onActivityResult中,我拍摄照片并将其存储在我的sd卡中。我试图修改我的takePicture()函数以返回图片的路径(字符串而不是void)。

我已经知道getPath()从java.io.File允许我这样做。

所以我的问题是:我如何修改我的函数来返回的路径这幅画吗?

takePicture将无法返回路径,因为它将在您的意图完成之前返回。您需要对onActivityResult

中的路径做一些操作

下面是获取在pictureCallback

中捕获和存储图像的路径的代码

在此代码中 mFilePath 是保存图像路径的字符串…

PictureCallback mPicture = new 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();
                String mFilePath = pictureFile.getAbsolutePath(); 
            } catch (FileNotFoundException e) {
            } catch (IOException e) {
            }
        }
    };
    private static 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;
    }
}

相关内容

最新更新