1

サーバーとクライアントとして 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;
    }
}
4

1 に答える 1

0

この関数は、別のスレッドで実行されるクラスに属しています。

Java にはメソッド (関数ではない) があり、クラスはスレッド上で実行されません (メソッドは実行します)。

これがonPictureTaken()Camera.PictureCallbackある場合、それはメイン アプリケーション スレッドで呼び出されます。

于 2013-10-03T23:01:44.800 に答える