Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何确保JpegCallback在尝试访问图片之前已完成写入_Android_File Io_Callback_Camera_Photo - Fatal编程技术网

Android 如何确保JpegCallback在尝试访问图片之前已完成写入

Android 如何确保JpegCallback在尝试访问图片之前已完成写入,android,file-io,callback,camera,photo,Android,File Io,Callback,Camera,Photo,我正在编写一个应用程序,其中一个关键功能是拍摄一张照片并将其写入文件,然后将该照片读取到base64数组中(只需单击一个按钮)。问题是,当我启动onclick拍摄照片时,它将在onphototake()函数收到图像并将其写入指定的存储目录之前从该函数返回 我在代码中的几个阶段添加了日志输出,很明显,onclick takePhoto函数在其调用的onphototake()函数完成之前退出 android文档指出,您需要等待JpegCallback完成返回,然后才能重新启动预览,但我很难让它等待写

我正在编写一个应用程序,其中一个关键功能是拍摄一张照片并将其写入文件,然后将该照片读取到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