0

所以我正在尝试使用以下代码启动相机活动:

//In public void captureImage()
...
Intent cameraIntent = new Intent(MediaStore.ACTION_CAPTURE_IMAGE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                      Uri.fromFile(new File("/sdcard/image.jpg")));
startActivityForResult(cameraIntent, REQUEST_CAMERA);

然后处理结果:

//In onActivityResult()
...
case REQUEST_CAMERA:
  Intent intent = new Intent (CurrentScreen.this, NextScreen.this);
  intent.putExtra(data);
  startActivity(intent);
  CurrentScreen.this.finish();
...

intent.putExtra(data)用来将小位图附加到意图的位置,并将其用作下一个活动中的缩略图,并且完整大小的文件应该保存为/sdcard/image.jpg.

这是预期的行为(根据文档),有一个小位图作为缩略图,并保存一个大文件。然而,在 G1 和 Eris 上进行测试时,我看到了一些奇怪的行为。

在 G1 上:

  • 虽然 resultCode 显示 RESULT_OK,但返回到结果处理程序的意图数据为空。
  • 另外 EXTRA_OUTPUT 似乎完全被忽略了,我不知道它在哪里保存图像。

在厄里斯:

  • 意图数据恢复正常
  • EXTRA_OUTPUT 也被忽略,但它将图像保存到常规媒体存储中/sdcard/dcim/100media

所以我的问题是:有什么方法可以让我尝试使用标准相机活动获得一致的行为?我可以编写一个自定义活动来尝试让它以我想要的方式工作,但我更愿意避免这条路线。

4

1 回答 1

0

由于我是 Java/Android 开发领域的新手,因此我无法回答您的问题。但是我正在尝试与您正在做的类似的事情,除了我想简单地拍照然后将其附加到电子邮件中。

我实现了您的示例的一部分,并且能够验证相机是否创建了我指定的文件,并且如果我对下一张图片使用相同的文件名,它会覆盖之前的文件,这是我所期望的。

但我真正想说的是,也许你必须测试 pat "/sdcard/..." 是否真的存在。您还可以通过将路径传递给下一个活动来简化您的流程。

祝你好运,

杰米·欧文

于 2010-12-08T20:10:45.733 回答