คอนนี้ผมพัฒนาโปรแกรมโดยมีส่วนของการ Download ครับ ตอนนี้สามารถทำให้สามารถ Download ได้โดยใช้วิธีการ AsyncTask
วิธีดังกล่างจะต้อง download ทีเดียวให้เสร็จ หากสัญญาณไม่ดี หลุด connection ไปแล้วจะต้องเริ่มต้น download ใหม่
ผมอยากขอคำแนะนำ หรือตัวอย่าง Code ที่สามารถทำให้มันสามารถ download ต่อจากเดิมได้ครับ
ขอบคุณครับ
ผมว่าคุณไปอ่าน AsyncTask ให้เข้าใจก่อนครับ ว่ามันคืออะไร [Step การทำงานมันเป็นยังไง มันต้องรองรับ orientation ด้วย คือ การสลับจอแบบแนวตั้ว หรือ แนวนอน ครับ ] แล้วค่อยไปทำความเข้าใจการ download แบบ Resume
// Ex. Download Resume
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
if(ISSUE_DOWNLOAD_STATUS.intValue()==ECMConstant.ECM_DOWNLOADING){
File file=new File(DESTINATION_PATH);
if(file.exists()){
downloaded = (int) file.length();
connection.setRequestProperty(“Range”, “bytes=”+(file.length())+”-“);
}
}else{
connection.setRequestProperty(“Range”, “bytes=” + downloaded + “-“);
}
connection.setDoInput(true);
connection.setDoOutput(true);
progressBar.setMax(connection.getContentLength());
in = new BufferedInputStream(connection.getInputStream());
fos=(downloaded==0)? new FileOutputStream(DESTINATION_PATH): new FileOutputStream(DESTINATION_PATH,true);
bout = new BufferedOutputStream(fos, 1024);
byte[] data = new byte[1024];
int x = 0;
while ((x = in.read(data, 0, 1024)) >= 0) {
bout.write(data, 0, x);
downloaded += x;
progressBar.setProgress(downloaded);
}
วิธีนี้ผมลองดูแล้วครับ มันไม่เวิร์คครับ ไฟล์ที่ได้จะมีขนาดเกินจริงเพราะมันเริ่มโหลดใหม่ แต่เอาไฟล์ไปต่อกับไฟล์เดิมครับ เช่น ไฟล์ 100MB โหลดไปได้ 20MB แล้วหยุดไป พอเริ่มใหม่และโหลดจนเสร็จจะได้ไฟล์ขนาด 120MB ครับ
อีกเรื่องคือผมไม่มี Class ECMConstant ครับ ไม่รู้ว่าเป็นเพราะผมใช้ SDK 7 (Android 2.1) รึป่าวครับ? มันอาจจะรองรับที่ SDK 8 ขึ้นไป
วิธีนี้ผมลองดูแล้วครับ มันไม่เวิร์คครับ ไฟล์ที่ได้จะมีขนาดเกินจริงเพราะมันเริ่มโหลดใหม่ แต่เอาไฟล์ไปต่อกับไฟล์เดิมครับ เช่น ไฟล์ 100MB โหลดไปได้ 20MB แล้วหยุดไป พอเริ่มใหม่และโหลดจนเสร็จจะได้ไฟล์ขนาด 120MB ครับ
ผมว่าไฟล์มันไม่ได้ ขนาดใหญ่ขึ้นหลอก ครับ แต่คุณไม่เก็บตำแหน่งสุดท้าย[ล่าสุด]ที่มันดาวล์โหลด
แล้วนําไปใช้ใหม่[เมือดาวโหลดอีกครั้ง] ครับ คุณทำเหมือนให้มันดาวล์โหลดใหม่ทุกครั้งอะครับ ไฟล์มันก็เลยมีขนาด 100+20 = 120 ครับ
เดียวว่างๆๆ ก่อนนะ เดียวถ้ายังไม่มีไครตอบเดียวมาตอบให้คับ
มันเป็นแบบนั้นเลยครับ ถ้าผมทำได้ก่อนผมจะมาบอกนะครับ
ขอบคุณครับ
ไม่ทราบว่าได้ ยังครับ
ยังไม่ได้เลยครับ ตอนนี้พักไปแล้วครับ
ไม่ทราบว่ามีวิธีแนะนำรึป่าวครับ?