1

ソケットを介して画像を送信したいのですが、プログレスバーに送信プロセスが表示されている必要があり、画像の送信中に更新する必要がありますが、このコードを試したときにプログレスバーが表示されず、画像が送信されています. これを試しましたが、進行状況バーに直接 100 が表示され、プロセスがまだ進行中であり、進行状況バーに 100% が表示されます

            int count;         
            try {
            //image send
            client = new Socket(ServerIP,4444);

            File file = new File(path);
            byte[] mybytearray = new byte[(int) file.length()];
            FileInputStream fis = new FileInputStream(file);
            BufferedInputStream bis = new BufferedInputStream(fis);
            //bis.read(mybytearray, 0, mybytearray.length);
            OutputStream os = client.getOutputStream();
            DataOutputStream dos = new DataOutputStream(os);     
            dos.writeUTF(file.getName()); 
            long total = 0;

            while ((count = bis.read(mybytearray)) != -1) {
                total += count;
                publishProgress(""+(int)((total*100)/file.length()));
                 os.write(mybytearray, 0, mybytearray.length);
                 //os.write(mybytearray, 0, mybytearray.length);

            }
           // os.write(mybytearray, 0, mybytearray.length);
           // os.write(mybytearray, 0, mybytearray.length);
            os.flush();
            bis.close();
            fis.close();
            client.close();

        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return null;
    }
4

1 に答える 1

0

では、コードの残りの部分、特にpublishProgressメソッドを示してください。しかし、ほとんどの場合、単に呼び出すsetMax(...)のを忘れており、最初の 100 バイトを受け取った時点で既に 100% になっています。

于 2013-03-23T12:38:54.260 に答える