Android 如何确保JpegCallback在尝试访问图片之前已完成写入
我正在编写一个应用程序,其中一个关键功能是拍摄一张照片并将其写入文件,然后将该照片读取到base64数组中(只需单击一个按钮)。问题是,当我启动onclick拍摄照片时,它将在onphototake()函数收到图像并将其写入指定的存储目录之前从该函数返回 我在代码中的几个阶段添加了日志输出,很明显,onclick takePhoto函数在其调用的onphototake()函数完成之前退出 android文档指出,您需要等待JpegCallback完成返回,然后才能重新启动预览,但我很难让它等待写入完成 代码: 日志类别:Android 如何确保JpegCallback在尝试访问图片之前已完成写入,android,file-io,callback,camera,photo,Android,File Io,Callback,Camera,Photo,我正在编写一个应用程序,其中一个关键功能是拍摄一张照片并将其写入文件,然后将该照片读取到base64数组中(只需单击一个按钮)。问题是,当我启动onclick拍摄照片时,它将在onphototake()函数收到图像并将其写入指定的存储目录之前从该函数返回 我在代码中的几个阶段添加了日志输出,很明显,onclick takePhoto函数在其调用的onphototake()函数完成之前退出 android文档指出,您需要等待JpegCallback完成返回,然后才能重新启动预览,但我很难让它等待写
10-13 12:55:39.185: D/capture(7126): photo was captured
10-13 12:55:39.185: D/this one is(7126): being called
这些是唯一出现的日志输出。我也有同样的问题,拍摄一张照片,然后尝试创建缩略图并将其存储到媒体库。 正如这里所定义的(developer.android.com/reference/android/hardware/Camera.html#takePicture),takePicture是一个异步过程,因此您必须导出程序逻辑并指定顺序。 这可以通过AsyncTask()实现
在示例中,onPostExecute方法中的代码将在camera.takePicture之后执行(因此您可以确保PictureCallback中的onPictureTaken已完成)。您的意思是永远不会调用
jpegCallback.onPictureTaken()
?这可能是因为相机还没有准备好拍照。例如,预览未启动。我确定预览已启动,以防在调用takePicture(null、null、jpegCallback)函数之前再次启动。问题在于,调用此函数后,它会在onPictureTaken启动之前返回。显然,拍摄图像并返回回调需要几秒钟的时间。在调用整个函数集之后,我在main中有一个日志输出,它将在照片写入输出发生之前输出。(如果我编辑onClick,使其在拍照功能设置之后没有任何内容)。所以我推断问题是我所说的,但我仍然不能用while和if语句来解决它。我仍然不理解你的问题。您是否看到调用了jpegCallback.onPictureTaken()
?完成takePhoto()
后的延迟时间是多少?
10-13 12:55:39.185: D/capture(7126): photo was captured
10-13 12:55:39.185: D/this one is(7126): being called