在 Nexus S 上使用 native 相机应用程序无法保存 Android 图像

标签 android camera nexus-s

所以这有点奇怪,因为在我测试的三台设备中,我只在装有 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 中,并且由于我启动了 native 相机应用并且在返回时不保存图像,所以它不会保存它。有谁知道这是真的吗?看到这种行为了吗?

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

编辑:好吧,在进一步处理之后,我尝试将 URI 添加到 Intent 的 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));

最佳答案

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

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 方法 -> 导致原生相机应用复选标记按钮在被点击时不做任何事情

希望这对某人有帮助..

关于在 Nexus S 上使用 native 相机应用程序无法保存 Android 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10937659/

相关文章:

java - 使用 Android 创建强密码生成器

java - 似乎无法登录或连接到 MySQL 数据库

camera - Expo recordAsync() 不返回响应

android - 如何在 linux/android 平台上设置高于 44.1kHz 的音频采样率?

android - Nexus S 和三星 Galaxy S I9000 上的 ACTION_IMAGE_CAPTURE 方向问题

java - com.marlonjones.nimbus.WeatherWatchFaceService.WeatherWatchFaceEngine 中没有可用的默认构造函数

java - 无法通过套接字连接到其他设备

ios - 使用 CIContext 在 GLKView 中绘制时,方面填充 AVCaptureVideoDataOutput

android - 将图像从 ImageView 保存到内部/外部设备存储器中

android - Linux下连接Nexus S到Eclipse