2013-03-23 37 views
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; 
    } 

回答

0

好,pleasse顯示你的代碼的其餘部分,尤其是publishProgress方法。但最有可能的是,你忘記了致電setMax(...),並且當你收到第一個100字節時,它已經達到了100%。

+0

對不起,但這是發送圖像的實際代碼和1件事我忘了是int count;在try {聲明之上,但是如果你想要的話,我會放置包含pre,post方法和進度條細節的代碼的其餘部分... – 2013-03-24 11:28:02

+0

並根據你,我應該看到進度的最大值當圖像正在發送時,從0進步到100% – 2013-03-24 11:30:22

+0

實際上,您的publishProgress函數的實現將非常有用,可以查看實際更新ProgressBar的方式 – Goddchen 2013-03-24 19:17:45

相關問題