Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从onActivityResult(int requestCode、int resultCode、Intent data)获取结果?_Java_Android_Camera - Fatal编程技术网

Java 如何从onActivityResult(int requestCode、int resultCode、Intent data)获取结果?

Java 如何从onActivityResult(int requestCode、int resultCode、Intent data)获取结果?,java,android,camera,Java,Android,Camera,我正在做一个Android项目,它允许用户使用相机拍照 我的方法如下所示: private void takePicture(){ Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(camera, 1337); } 在我的onActivityResult中,我拍摄了照片并将其存储在SD卡中。我试图修改takePicture()函数以返回图

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

我的方法如下所示:

private void takePicture(){
        Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(camera, 1337);
    }
在我的onActivityResult中,我拍摄了照片并将其存储在SD卡中。我试图修改takePicture()函数以返回图片的路径(字符串而不是void)

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

所以我的问题是:如何修改我的函数以返回 照片


takePicture
将无法返回路径,因为它将在您的意图完成之前返回。您需要对ActivityResult中的路径执行一些操作,这里是获取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;
    }
}

看看这篇文章:复制的,看看那里。他已经说他正在将图像存储到SD卡的
onActivityResult
,那么为什么这与此相关呢?@Rawkode在上面的示例中,有一些方法显示了他只需要将void方法设置为String type并返回路径的路径…@Rawkode这个答案是否有用…?问题是“如何修改
takePicture
以返回
字符串
”作为图像路径的
字符串。这仍然是不可能的。@Rawkode brother您已经提到,
takePicture
无法返回字符串值,所以我只是向他展示另一种获取路径的方法,。。如果我在我的问题中写的和你在我的文字中写的一样,那就是重复,所以我没有写,只是告诉他怎么做。。