【发布时间】:2016-01-06 14:29:26
【问题描述】:
我目前正在为用户创建一个将图像上传到我的服务器的功能。他可以用他的相机或从他的画廊拍照。 我正在使用此代码用相机拍照:
// create Intent to take a picture and return control to the calling application
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
tempFile = File.createTempFile(String.valueOf(System.currentTimeMillis()), ".jpeg", ContextCompat.getExternalCacheDirs(a)[0]);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile));
// start the image capture Intent
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
然后像这样操作我使用 onActivityResult 的图像:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
// use tempFile to recreate bitmap and do some heavy-wooshy-wishy stuff
...
}
}
它工作得很好,但我在使用相机时对Intent data 参数感到困惑。在这种情况下,它是空的,要使用拍摄的照片,我需要从我给 ... 意图的路径重新创建它。
我觉得特别困惑的是,如果我不放任何 EXTRA_OUTPUT 参数,那么Intent data 不为空,我可以通过data.getData() 轻松获取图片的路径。
但是我只是从原始图片中得到一个缩略图。
有没有办法从相机中获取原始图片和意图中的路径?我没有任何真正的用例,但假设tempFile 字段在您拍照时被修改或破坏。然后在 onActivityResult 上,您将无法使用刚刚拍摄的照片。
【问题讨论】:
标签: android android-intent android-camera