1

asyncTask を使用して、ソケット経由で Android から PC に画像を送信しています。

このように呼んでいます

new SendImage().execute(data);

データの型byte[]

そして私のコードは

private class SendImage extends AsyncTask<byte[],Void, Void> {

    @Override
     protected Void doInBackground(byte[] ... data) {

        try{


            final DataOutputStream dataOutputStream;

            final BufferedOutputStream out = new BufferedOutputStream(RRAWsecurity.socket.getOutputStream());
            int count = data.length;

            dataOutputStream = new DataOutputStream(RRAWsecurity.socket.getOutputStream());
            dataOutputStream.writeInt(count);
            dataOutputStream.flush();

            out.write(data, 0, count);

            out.flush();

        }catch(Exception e)
        {
            e.printStackTrace();
        }

        return null;

 }
}

問題はこの行にあります

out.write(data, 0, count);

エラーは言う

The method write(byte[], int, int) in the type BufferedOutputStream is not applicable for the arguments (byte[][], int, int)

2D配列を要求する理由がわかりませんか?

4

3 に答える 3

4

data[0]の代わりに使用しdataます。表記法は、指定された型の配列の...構文糖衣にすぎません。は実際にはintint...の配列であり、 yourbyte...は byte[] 配列の配列として扱われるため、実際にはbyte[][].

于 2013-04-28T18:30:06.117 に答える