2010-11-25 34 views
0

所以我尝试使用下面的代码来启动相机活动:EXTRA_OUTPUT忽视了厄里斯,导致数据对G1返回null

//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似乎被完全忽略,我不知道它在哪里保存图像。

在厄里斯:

  • 的意图数据回来OK
  • EXTRA_OUTPUT也将被忽略,但它是在/sdcard/dcim/100media

所以保存图像到正规的媒体商店我的问题是这样的:有什么办法来获得一致的行为,我正在尝试使用标准相机活动?我可以写一个自定义活动来尝试让它按照我想要的方式工作,但我更愿意避开那条路线。

回答

0

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

我实现了你的例子的一部分,并能够验证相机创建了我指定的文件,并且如果我使用相同的文件名作为下一张照片,它覆盖了我期望的以前的文件。

但是我真正想说的是,如果pat“/ sdcard/...”实际存在与否,您可能需要测试一下。你也可以通过将路径传递给下一个活动来简化你的过程。

好运,

杰米·欧文

+0

其实我确实有检查建立在我的应用程序,但我省略了我的帖子的那部分让事情变得更短。我最终不得不做的事情很可能是编写我自己的相机活动,因为从我一直在读的不一致是由于不同制造商在手机中包含的不同相机应用。并非所有人都能正确处理ACTION_IMAGE_CAPTURE意图。 – jvergeldedios 2010-12-09 06:21:17