在Eris上忽略EXTRA_OUTPUT,导致数据在G1上返回null

时间:2010-11-25 04:45:05

标签: java android android-camera android-camera-intent

所以我尝试使用以下代码启动Camera活动:

//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)将小位图附加到intent,并在下一个活动中将其用作缩略图,并将完整大小的文件保存为/sdcard/image.jpg

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

在G1:

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

关于厄里斯:

  • 意图数据返回确定
  • EXTRA_OUTPUT也会被忽略,但会将图片保存到常规媒体商店/sdcard/dcim/100media

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

1 个答案:

答案 0 :(得分:0)

我不熟悉您的问题,因为我是Java / Android开发世界的新手。但我正在尝试类似于你正在做的事情,除了我想简单地拍照然后将它附加到电子邮件消息。

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

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

祝你好运,

杰米欧文