Download nhiều file cùng lúc.

Thảo luận trong 'Điện thoại, viễn thông' bắt đầu bởi dinhhieuac, 12/10/12.

  1. dinhhieuac New Member

    dinhhieuac

    Tham gia ngày:
    11/10/12
    Bài viết:
    7
    Đã được thích:
    0
    Điểm thành tích:
    0
    Bạn nào có example download multi file cùng lúc ko cho mình xin với,đang xem mà chưa hiểu lắm.thanks
     
    Đang tải...
  2. vangioicnt Moderator

    vangioicnt

    Tham gia ngày:
    11/10/12
    Bài viết:
    180
    Đã được thích:
    352
    Điểm thành tích:
    0
    Mình không có Example nhưng theo ý mình là bạn dùng Thread. Mỗi Thread sẽ download 1 file. Như vậy bạn sẽ download 1 lúc nhiều file.
     
    2 people like this.
  3. mobiledev New Member

    mobiledev

    Tham gia ngày:
    12/10/12
    Bài viết:
    16
    Đã được thích:
    2
    Điểm thành tích:
    0
    Mình đang gặp phải vấn đê này pro nào có code up lên giới thiệu giúp với. Xin đa tạ
     
  4. soha New Member

    soha

    Tham gia ngày:
    13/10/12
    Bài viết:
    12
    Đã được thích:
    4
    Điểm thành tích:
    0
    cái này là dùng downloadmanager trong system android, nó support sẵn rùi. Mình nhớ ko nhầm đây là bài hướng dẫn của nó. Lúc nào rảnh mình sẽ build lại 1 bản đầy đủ. Bạn có thêm tham khảo thêm ở đây nhé: Android DownloadManager Example | vogella blog

    PHP:
    public class DownloadManagerActivity extends Activity {
        private 
    long enqueue;
        private 
    DownloadManager dm;
     
        
    /** Called when the activity is first created. */
        
    @Override
        
    public void onCreate(Bundle savedInstanceState) {
            
    super.onCreate(savedInstanceState);
            
    setContentView(R.layout.main);
     
            
    BroadcastReceiver receiver = new BroadcastReceiver() {
                @
    Override
                
    public void onReceive(Context contextIntent intent) {
                    
    String action intent.getAction();
                    if (
    DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
                        
    long downloadId intent.getLongExtra(
                                
    DownloadManager.EXTRA_DOWNLOAD_ID0);
                        
    Query query = new Query();
                        
    query.setFilterById(enqueue);
                        
    Cursor c dm.query(query);
                        if (
    c.moveToFirst()) {
                            
    int columnIndex c
                                    
    .getColumnIndex(DownloadManager.COLUMN_STATUS);
                            if (
    DownloadManager.STATUS_SUCCESSFUL == c
                                    
    .getInt(columnIndex)) {
     
                                
    ImageView view = (ImageViewfindViewById(R.id.imageView1);
                                
    String uriString c
                                        
    .getString(c
                                                
    .getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));
                                
    view.setImageURI(Uri.parse(uriString));
                            }
                        }
                    }
                }
            };
     
            
    registerReceiver(receiver, new IntentFilter(
                    
    DownloadManager.ACTION_DOWNLOAD_COMPLETE));
        }
     
        public 
    void onClick(View view) {
            
    dm = (DownloadManagergetSystemService(DOWNLOAD_SERVICE);
            
    Request request = new Request(
                    
    Uri.parse("http://www.vogella.de/img/lars/LarsVogelArticle7.png"));
          [
    COLOR="#FF0000"]  enqueue dm.enqueue(request);[/COLOR]
     
        }
     
        public 
    void showDownload(View view) {
            
    Intent i = new Intent();
            
    i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS);
            
    startActivity(i);
        }
    }
    chỉ cần dùng arraylist cho cái dm.enqueue là xong, có thể download nhieuf file tùy theo size của arraylist
     
    2 people like this.
  5. hieutin1 New Member

    hieutin1

    Tham gia ngày:
    13/10/12
    Bài viết:
    3
    Đã được thích:
    3
    Điểm thành tích:
    0
    Sử dụng Async task trong android nhé.
    Đầu tiên là hàm tạo
    PHP:
    private static final int HELLO_ID 1;
        
    @
    Override
    public void onCreate(Bundle savedInstanceState) {
        
    super.onCreate(savedInstanceState);
        
    setContentView(R.layout.main);
            
        if(
    isInternetConnectionActive(getApplicationContext())) {
             
    showNotification(1);
        }
        else {
            
    showNotification(0);
        }
    }
       
    Trước khi download phải check kết nối internet sử dụng method
    isInternetConnectionActive(context)
    PHP:
    private boolean isInternetConnectionActive(Context context) {
            
    NetworkInfo networkInfo = ((ConnectivityManagercontext
                
    .getSystemService(Context.CONNECTIVITY_SERVICE))
                .
    getActiveNetworkInfo();

      if(
    networkInfo == null || !networkInfo.isConnected()) {
         return 
    false;
      }
         return 
    true;
    }
    Nếu kết quả của method kết nối là true, sẽ tạo 1 notification để show message
    PHP:
    private void showNotification(int status){
            
    String ns Context.NOTIFICATION_SERVICE;
       
    NotificationManager mNotificationManager 
           (
    NotificationManagergetSystemService(ns);

       
    int icon android.R.drawable.ic_media_play;
       
    CharSequence ticketText "Connection";
       
    long when System.currentTimeMillis();

       
    Notification notification = new Notification(iconticketTextwhen);

       
    Context context getApplicationContext();
       
    CharSequence contentTitle "Internet Connection";
       
    CharSequence contentText "";
            
       if(
    status == 1){
             
    contentText "Internet connected, Are you Update your Application?";
       }
       else{
            
    contentText "Internet disconnected!";
       }
           
       
    Intent notificationIntent = new Intent(thisNotifyPage.class);
       
    notificationIntent.addFlags(Notification.FLAG_ONGOING_EVENT);
       
    PendingIntent contentIntent 
         
    PendingIntent.getActivity(this0notificationIntent0);

       
    notification.setLatestEventInfo(contextcontentTitlecontentTextcontentIntent);

       
    mNotificationManager.notify(HELLO_IDnotification);
    }
    Trong method showmessage , sẽ định nghĩa 1 Intent , được khai báo như là tham số thứ 2 của class
    NotifyPage.class. Khi người dùng select 1 Notification, gọi activity NotifyPage.
    Đối với activity khi design gồm 2 button:
    Button1 tạo notification để show progressBar()
    Button 2 Cancel thao tác và back lại
    PHP:
    public void clearNotification(View v) {
            
    mNotificationManager.cancel(1);
        
    finish();
    }
        
    public 
    void UpdateApplication(View v){
        
    mNotificationManager.cancel(1);
        new 
    DownloadTask(this).execute("http://animal.discovery.com/" 
            
    "birds/peacock/pictures/peacock-picture.jpg");
    }
    trong class DownloadTask, bạn có thể gửi 1 số file nhưng trong viduj này chỉ gửi 1 file.
    Khi thực thi gọi hàm doInBackground() để thực hiện thao tác download ở chế độ backgroud. bạn có thể download 1 notification sử dụng methods trong class DownloadkTalk
    PHP:
     Collapse Copy Code

    public  DownloadTask(Context context){
       
    this.context context;
       
    //Create the notification object from NotificationHelper class
       
    mNotificationHelper = new NotificationHelper(context);
    }

    protected 
    void onPreExecute(){
       
    //Create the notification in the statusbar
       
    mNotificationHelper.createNotification();
    }

    protected 
    void onProgressUpdate(Integer... progress) {
       
    //This method runs on the UI thread, it receives progress updates
       //from the background thread and publishes them to the status bar
       
    mNotificationHelper.progressUpdate(progress[0]);
    }
    protected 
    void onPostExecute(Void result)    {
       
    //The task is complete, tell the status bar about it
       
    mNotificationHelper.completed();
    Chú ý phần quyền liên quan đến việc kết nối trong file AndroidManifest.xml: android.permission.INTERNET - android.permission.ACCESS_NETWORK_STATE.
     
    3 people like this.
  6. hieutin1 New Member

    hieutin1

    Tham gia ngày:
    13/10/12
    Bài viết:
    3
    Đã được thích:
    3
    Điểm thành tích:
    0
    Bác sonha tra lơi nhanh quá
     
  7. soha New Member

    soha

    Tham gia ngày:
    13/10/12
    Bài viết:
    12
    Đã được thích:
    4
    Điểm thành tích:
    0
    cái này khác là đầy đủ đó, hình như đúng là cái chủ topic cần;)
     
  8. dinhhieuac New Member

    dinhhieuac

    Tham gia ngày:
    11/10/12
    Bài viết:
    7
    Đã được thích:
    0
    Điểm thành tích:
    0
    thanks mọi người nha,kiếm cái nút thanks mà ko thấy :)
     
  9. mobiledev New Member

    mobiledev

    Tham gia ngày:
    12/10/12
    Bài viết:
    16
    Đã được thích:
    2
    Điểm thành tích:
    0
    Mới thấy nút thanks rồi, pro nào ảnh up full code của example này cho ae tham khảo với.
     
  10. nguyenvanhung New Member

    nguyenvanhung

    Tham gia ngày:
    22/7/13
    Bài viết:
    22
    Đã được thích:
    0
    Điểm thành tích:
    0
    Giới tính:
    Nam
    chuanda y phai dung asyntask lop nay cho phep ta thuc hienmot cong viec trong mot thread moi do do no se ko anh huong den main thread
    ngoai ra tacon co the update tien trinh lam viec cua cong viec cua chug ta nua
    rat hay
     

Chia sẻ trang này