3

所以这有点奇怪,因为在我正在测试的三款设备中,我只在 4.0.3 的 Google Nexus S 上遇到了这个问题。我正在启动本机相机应用程序拍照,我不在乎图像保存到哪里,所以我不指定,希望它会保存到默认位置,但没有保存位置全部!

在 Galaxy S 2 和 Samsung Skyrocket(都带有 2.3.something)上运行良好。

我用来启动应用程序的代码

Intent camIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(camIntent, TAKE_PHOTO);
return true;

我保持它非常简单,这就是我感到困惑的原因!有谁知道 Nexus S 的相机特有的任何问题?

编辑:似乎 Nexus S 的相机应用程序可能会将文件保存在某个 onActivityResult 中,并且由于我启动了本机相机应用程序并且在返回时不保存图像,因此它不会保存它。有人知道这是真的吗?看到这种行为了吗?

编辑:没有人见过这个?我很难相信我是第一个遇到这种情况的人...

编辑:好的,在进行了更多工作之后,我尝试将 URI 添加到意图的 EXTRA_OUTPUT 中,如下所示:

camIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                            Uri.parse(folderPath + String.format("%d.jpg", System.currentTimeMillis())));

现在我看到了这里描述的行为:Android ACTION_IMAGE_CAPTURE Intent,当我点击确定时相机应用程序不做任何事情,并且事先创建文件也不起作用,因为我尝试这样:

File f = new File(folderPath, filename);
f.createNewFile();
camIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.parse(folderPath + filename));
4

1 回答 1

2

好吧,想通了。奇怪的是,我不知道为什么,但改变这一行:

camIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.parse(folderPath + filename));

camIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));

解决它。不知道我是否应该理解为什么......但无论如何,它有效。我确实尝试了十亿其他的东西......

根本没有指定EXTRA_OUTPUT - >相机会表现得一切都很好......除了它不会在任何地方保存图像

获取由 intent.getExtras().get("data") -> 获取的位图确实返回了一个位图,但它不是许多错误报告中广泛记录的全尺寸图像

使用上面的 Uri.parse 方法 -> 导致本机相机应用程序复选标记按钮在单击时不执行任何操作

希望这可以帮助某人..

于 2012-06-10T20:20:35.217 回答