我想以不需要用户交互且不显示用户交互元素的方式拍照。换句话说,我想使用后台进程拍照。不得发出声音(例如拍照时的相机快门)。如果可能的话,如果我可以设置相机的分辨率而不是在拍摄后调整图像大小,那也很好。
我见过的所有代码示例都使用一个显示典型相机应用程序并让用户手动拍照的活动。
我认为相机的开发页面很好地概述了这个过程。你读过吗?
- 从 open(int) 获取 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() 中重新打开()它)。
虽然它确实提到了预览,但您始终可以隐藏用于预览的表面。不需要用户交互。