因此,我试图使用以下代码启动相机活动:

//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上:

  • 尽管结果代码显示了result_ok,但返回到结果处理程序的意图数据为null。
  • 另外,Extra_output似乎完全忽略了,我不知道它在哪里保存图像。

在Eris上:

  • 意图数据又回来了
  • extra_output也被忽略了,但是它将图像保存到常规媒体存储 /sdcard/dcim/100media

因此,我的问题是:有什么方法可以为我尝试使用标准摄像头活动而尝试做什么?我可以写一项自定义活动以尝试按照我想要的方式工作,但是我希望避免那条路线。

有帮助吗?

解决方案

我对您的问题没有答案,因为我是Java/Android开发世界的新手。但是我正在尝试类似于您所做的事情,除了我想简单地拍摄图片,然后将其附加到电子邮件中。

我实现了您示例的一部分,并能够验证摄像机是否创建了我指定的文件,并且如果我在下一张图片中使用相同的文件名,则它将覆盖上一个文件,这是我所期望的。

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

祝你好运,

杰米·欧文(Jamie Irwin)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top