6

在我的应用程序中,我必须实现本机相机活动,我必须启动相机并拍照。Android - 捕获照片

详细地说, 我的应用程序包含一个TextView(顶部)以显示活动名称和一个按钮(在底部)并且在屏幕的中间区域,应该查看相机预览。当用户单击该按钮时,应该点击捕捉并将其显示到其他活动的Imageview中。

我知道下面的方法用于:

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
startActivityForResult(intent, 0); 

但是这种做法,如果我使用则不会显示我的TextView和按钮视图。

(请注意:我使用的Android SDK 1.5与HTC Hero的)

请帮助我,任何文章,网站或PDF的建议。

感谢名单,帕雷什

回答

9

如果你要使用本机摄像头,一旦原生相机被称为它就会控制你的视图实现。但是,如果你想实现自己的相机,那么这样的布局是可能的。一些很好的例子可以在这里找到:

古德勒克!

+0

看起来......终于我必须以第二个链接的方式实现Camera应用程序 – 2010-08-17 05:04:55

+0

thanx以获得有价值的答案..但让我知道IMAGE_CAPTURE意图可能捕获的最大尺寸是多少? – 2010-08-17 05:05:28

+0

你可以得到他们全尺寸,但你可能不会。我遇到了同样的问题,以比我猜想的更小的图像重新拍摄照片。理论上你应该能够通过你在意图上指定的路径获得位图。不过,我可以通过以下方式检索较大版本: \t \t \t \t Uri pic = Uri.parse(data.toURI()); \t \t \t \t位图bm = Media.getBitmap(getContentResolver(),pic); onActivityResult方法中的 。希望这可以帮助。 – ninjasense 2010-08-17 05:52:23

4

所有指令都是在android.hardware.Camera的JavaDoc的在http://developer.android.com/reference/android/hardware/Camera.html

  1. 获得开放式摄像机的一个实例()。
  2. 使用getParameters()获取现有(默认)设置。
  3. 如有必要,修改返回的Camera.Parameters对象并调用setParameters(Camera.Parameters)。
  4. 如果需要,请调用setDisplayOrientation(int)。
  5. 重要提示:将完全初始化的SurfaceHolder传递给setPreviewDisplay(SurfaceHolder)。如果没有表面,相机将无法启动预览。
  6. 重要提示:调用startPreview()可以开始更新预览界面。必须先开始预览才能拍摄照片。
  7. 如果需要,请调用takePicture(Camera.ShutterCallback,Camera.PictureCallback,Camera.PictureCallback,Camera.PictureCallback)来捕获照片。等待回调提供实际的图像数据。
  8. 拍摄照片后,预览显示将停止。要拍摄更多照片,请再次调用startPreview()。
  9. 调用stopPreview()停止更新预览表面。
  10. 重要提示:呼叫释放()释放相机以供其他应用程序使用。应用程序应立即在onPause()中释放相机(并在onResume()中重新打开它())。

    的SurfaceHolder是后容易使用SurfaceView

+0

thanx的答案..我已经读过这篇文章,但不知道如何实现它。 – 2010-08-16 10:09:44