2014-07-16 133 views
0

我想發送18 MB數據。這是工作。但是我必須等待太久才能收到電子郵件。在Android中快速發送大文件

代碼:

public void sendEmail() 
{ 
    emailSendReceiver = new EmailSendBroadcastReceiver(); 
    EmailSend emailSend = new EmailSend(); 
    emailSend.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); 
} 

public class EmailSend extends AsyncTask<Void, Void, Boolean> 
{ 
    @Override 
    protected Boolean doInBackground(Void... params) 
    { 
     boolean bResult = false; 
     String sDeviceID = configReader.getXmlValue(KEY_ID); 
     Mail m = new Mail("[email protected]", "testpass"); 
     String[] toArr = {"[email protected]"}; 
     m.setTo(toArr); 
     m.setFrom("[email protected]"); 
     m.setSubject("device number : "+sDeviceID); 
     m.setBody("device number : "+sDeviceID); 
     try 
     { 
      String sTxtFileName = sDeviceID+"_"+".txt"; 
      String sFileUrl = Environment.getExternalStorageDirectory().getAbsolutePath()+"/data_source/"+sTxtFileName; 
      m.addAttachment(sFileUrl); 
      if(m.send()) 
      { 
       bResult = true; 
      } 
      else 
      { 
       // something 
      } 
     } 
     @Override 
     protected void onPostExecute(Boolean result) 
     { 
      super.onPostExecute(result); 
      if(result == true) 
      { 
       // something 
      } 
     } 
    } 
} 

問題是。我怎樣才能讓它更快?我有6個AsyncTask。我不喜歡用活動來完成它。

+1

你想發送一個18mb附件的電子郵件?別。 – stuXnet

+0

您的互聯網連接速度有多快?多久時間? – stuXnet

+0

zip sTxtFileName?使用HTTP/FTP? –

回答

0
public void makeZip(String sFile, String zipFileName) 
{ 
    FileOutputStream dest = null; 
    ZipOutputStream out; 
    byte data[]; 
    FileInputStream fi = null; 
    int count; 

    try 
    { 
     dest = new FileOutputStream(zipFileName); 

     out = new ZipOutputStream(new BufferedOutputStream(dest)); 
     data = new byte[BUFFER]; 

     fi = new FileInputStream(sFile); 

     BufferedInputStream origin = new BufferedInputStream(fi, BUFFER); 
     ZipEntry entry = new ZipEntry(sFile); 

     out.putNextEntry(entry); 

     while((count = origin.read(data, 0, BUFFER)) != -1) 
     { 
      out.write(data, 0, count); 
     } 

     origin.close(); 

     out.close(); 
    } 
    catch (FileNotFoundException e) 
    { 
     e.printStackTrace(); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
} 
1

正如所有建議這將是方便壓縮或gzip文件。

java.util.zip* 包可用。此外,你可以找到相同的幫助here