在Nexus S上使用本机相机应用程序无法保存Android Image

时间:2012-06-07 18:26:09

标签: android camera nexus-s

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

在Galaxy S 2和三星Skyrocket上都可以正常工作(两者都有2.3.something)。

我正在使用代码来启动应用

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

我保持简单,这就是为什么我很困惑!有没有人知道Nexus S相机特有的问题?

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

编辑:没有人见过这个?我发现很难相信我是第一个遇到这个问题的人......

编辑:好吧,在完成更多工作之后,我尝试在意图的EXTRA_OUTPUT中添加一个URI,如下所示:

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

1 个答案:

答案 0 :(得分: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方法 - >导致本机相机应用程序复选标记按钮在单击时不执行任何操作

希望这有助于某人..