サーバーとクライアントとして 2 つのアプリケーションを開発しています。サーバー アプリケーションは繰り返し写真を撮り、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;
}
}