Android - 拍摄照片

Posted

技术标签:

【中文标题】Android - 拍摄照片【英文标题】:Android - Capture photo 【发布时间】:2011-03-30 08:23:29 【问题描述】:

在我的应用程序中,我必须实现本地相机活动,我必须启动相机并拍照。

详细来说, 我的应用程序包含一个 TextView(顶部)显示活动名称和一个按钮(底部),在屏幕的中间区域,应查看相机预览。当用户单击该按钮时,应单击并显示快照进入另一个活动的 Imageview。

我知道使用了以下方法:

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

但是如果我使用这种方法,那么我的文本视图和按钮视图不会显示。

(请注意:我正在使用带有 HTC Hero 的 Android SDK 1.5)

请通过任何文章、网站或 pdf 的建议帮助我。

谢谢,帕雷什

【问题讨论】:

【参考方案1】:

如果您尝试使用本机摄像头,一旦调用本机摄像头,它将控制您的视图。但是,如果您想实现自己的相机,那么这样的布局是可能的。可以在这里找到一些很好的例子:

http://www.brighthub.com/mobile/google-android/articles/43414.aspx

http://labs.makemachine.net/2010/03/simple-android-photo-capture/

http://www.jondev.net/articles/Capturing,_Saving,_and_Displaying_an_Image_in_Android_(1.5,_1.6,_2.0,_2.1,_2.2,_Sense_UI_-_Hero)

祝你好运!

【讨论】:

看起来...最后我必须以第二种链接方式实现相机应用程序 感谢您提供宝贵的答案..但是让我知道使用 IMAGE_CAPTURE 意图捕获的最大尺寸是多少? 你可以得到它们的全尺寸,但你可能不是。我遇到了同样的问题,以比我猜测的更小的图像返回图片。理论上,您应该能够通过您在意图上指定的路径获取位图。但是我能够通过以下方式检索更大的版本: Uri pic = Uri.parse(data.toURI());位图 bm = Media.getBitmap(getContentResolver(), pic);在 onActivityResult 方法中。希望这会有所帮助。 我在我的应用程序中实现的第二个链接方式......感谢让我的生活......非常有用的链接和你的支持 @PareshMayani 您好 Paresh,第二个链接已损坏...您能帮我解决这个问题吗?【参考方案2】:

所有说明都在http://developer.android.com/reference/android/hardware/Camera.htmlhttp://developer.android.com/reference/android/hardware/Camera.html的android.hardware.Camera 的JavaDoc 中:

    从 open() 获取 Camera 实例。 使用 getParameters() 获取现有(默认)设置。 如有必要,修改返回的Camera.Parameters对象并调用setParameters(Camera.Parameters)。 如果需要,调用 setDisplayOrientation(int)。 重要提示:将完全初始化的 SurfaceHolder 传递给 setPreviewDisplay(SurfaceHolder)。没有表面,相机将无法开始预览。 重要提示:调用 startPreview() 开始更新预览图面。必须先开始预览,然后才能拍照。 如果需要,请调用 takePicture(Camera.ShutterCallback, Camera.PictureCallback, Camera.PictureCallback, Camera.PictureCallback) 来拍摄照片。等待回调提供实际的图像数据。 拍照后,预览显示将停止。要拍摄更多照片,请先再次调用 startPreview()。 调用 stopPreview() 以停止更新预览图面。

    重要提示:调用 release() 以释放相机以供其他应用程序使用。应用程序应立即在 onPause() 中释放相机(并在 onResume() 中重新打开()它)。

    SurfaceHolder 通常使用SurfaceView 实现

【讨论】:

感谢答案..我已经阅读了这篇文章,但不知道如何实现它。

以上是关于Android - 拍摄照片的主要内容,如果未能解决你的问题,请参考以下文章

Android - 拍摄照片

Android:BroadcastReceiver 意图检测拍摄的相机照片?

Android笔记67Android之使用系统中的相机功能(拍照保存照片显示拍摄的照片照片保存到图库等操作)

Android:保存用户使用相机拍摄的照片

一致地从 Android 供应商的 MediaStore 加载照片(由相机拍摄)

android 网络浏览器是不是允许上传刚从相机拍摄的照片?