2013-10-03 51 views
1

我正在开发两个应用程序作为服务器和客户端。服务器应用程序重复拍摄照片并通过tcp套接字发送给客户端应用程序。 在onPictureTaken函数中,我使用base64编码字节数组并将结果字符串写入输出流。但是,拍摄一些照片后,相机会给出错误信息,如“相机错误1004”。使用Android相机拍照时出现“相机错误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

什么是'out'?如果它是一些流到服务器,为什么你在主应用程序线程上做网络I/O? – CommonsWare

+0

out是一个outputStream,并且此函数属于在不同线程中运行的类。 –

回答

0

此功能属于在不同的线程中运行的类。

Java有方法(不是函数),类不能在线程上运行(方法)。

如果这是the onPictureTaken() of your Camera.PictureCallback,那就在主应用程序线程上调用。

+0

我在不同的线程中调用该类的所有函数。所以,onPictureTaken()也在另一个线程中调用。问题不在于这个问题。 –