簡體   English   中英

如何從onActivityResult(int requestCode,int resultCode,Intent data)獲取結果?

[英]How can I get a result from an onActivityResult(int requestCode, int resultCode, Intent data)?

我正在開發一個允許用戶使用相機拍照的Android項目。

我的方法看起來像這樣:

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

在我的onActivityResult中,我拍攝照片並將其存儲在我的SdCard中。 我試圖修改我的takePicture()函數來返回圖片的路徑(String而不是void)。

我已經知道java.io.File中的getPath()允許我這樣做。

所以我的問題是:如何修改我的函數以返回圖片的路徑?

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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM