我正在开发两个应用程序作为服务器和客户端。服务器应用程序重复拍照并通过tcp套接字将它们发送到客户端应用程序。 在onPictureTaken函数中,我在base64中编码字节数组,并将结果字符串写入输出流。但是,拍完照片后,相机会出现“相机错误1004”的错误。
起初,我认为有内存泄漏,而且确实如此。但现在,我通过部分编码来解决它。不过,相机会在一段时间后发出错误。这个错误意味着什么?
以下是该函数的代码:
public void onPictureTaken(byte[] data, Camera camera) {
Log.e(TAG, "Taking picture of " + data.length + " bytes.");
String imageXML = "<image>" + encodeTobase64(data) + "</image>";
BufferedWriter bufferedWriter;
try {
bufferedWriter = new BufferedWriter(new OutputStreamWriter(out));
bufferedWriter.write(Utils.packServerMessage(imageXML));
bufferedWriter.flush();
Log.e(TAG, "Picture is sent.");
isReady = true;
} catch (IOException e) {
Log.e(TAG, "Picture cannot be sent.");
isError = true;
}
}
答案 0 :(得分:0)
此函数属于在不同线程中运行的类。
Java有方法(不是函数),类不在线程上运行(方法可以)。
如果这是the onPictureTaken()
of your Camera.PictureCallback
,则在主应用程序线程上调用。