文件上传进度条的Andr​​oid,类似WhatsApp的? [英] File upload progress bar android, similar to whatsapp?

查看:107
本文介绍了文件上传进度条的Andr​​oid,类似WhatsApp的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家都必须使用WhatsApp的使者。

As you all must have use WhatsApp messenger.

我想用类似的图标,文件上传,显示进度,即进度条。如何实现这一点。

I want to use similar icon for file upload which shows progress i.e. progress bar. how to implement that.

    private class ImageUpload extends AsyncTask<String[],Void, Void>{
        ProgressDialog dialog = new ProgressDialog(Talk.this);
        @Override
    protected void onPreExecute() {
        super.onPreExecute();
     dialog.setMessage("Please wait...");
             dialog.setIndeterminate(true);
             dialog.setCanceledOnTouchOutside(false);
             dialog.setCancelable(false);
             dialog.show();
    }

    @Override
    protected Void doInBackground(String[]... params) {
     HttpURLConnection conn = null;
    DataOutputStream dos = null;
    DataInputStream inStream = null;

 String existingFileName= videoPath;
    String str="";
    System.out.println("(Talk)videoPath"+existingFileName);
    String lineEnd = "\r\n";
    String twoHyphens = "--";
    String boundary =  "*****";
    int bytesRead, bytesAvailable, bufferSize;
    byte[] buffer;
         int maxBufferSize = 10*1024*1024;
    String responseFromServer = "";
    String urlString = "myurl.php";
    try
    {
     //------------------ CLIENT REQUEST
    FileInputStream fileInputStream = new FileInputStream(new 
         File(existingFileName) );
     // open a URL connection to the Servlet
     URL url = new URL(urlString);
     // Open a HTTP connection to the URL
     conn = (HttpURLConnection) url.openConnection();
     // Allow Inputs
     conn.setDoInput(true);
     // Allow Outputs
     conn.setDoOutput(true);
     // Don't use a cached copy.
     conn.setUseCaches(false);
     // Use a post method.
     conn.setRequestMethod("POST");
     conn.setRequestProperty("Connection", "Keep-Alive");
     conn.setRequestProperty("Content-Type", "multipart/form 

        data;boundary="+boundary);
     dos = new DataOutputStream( conn.getOutputStream() );
     dos.writeBytes(twoHyphens + boundary + lineEnd);
     dos.writeBytes("Content-Disposition: form-data;  
          name=\"uploadedfile\";filename=\"" + existingFileName + "\"" + lineEnd);
     dos.writeBytes(lineEnd);
     // create a buffer of maximum size
     bytesAvailable = fileInputStream.available();
     bufferSize = Math.min(bytesAvailable, maxBufferSize);
     buffer = new byte[bufferSize];
     // read file and write it into form...
     bytesRead = fileInputStream.read(buffer, 0, bufferSize);
     while (bytesRead > 0)
     {
      dos.write(buffer, 0, bufferSize);
      bytesAvailable = fileInputStream.available();
      bufferSize = Math.min(bytesAvailable, maxBufferSize);
      bytesRead = fileInputStream.read(buffer, 0, bufferSize);
     }
     // send multipart form data necesssary after file data...
     dos.writeBytes(lineEnd);
     dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
     // close streams
     Log.e("Debug","File is written");
     fileInputStream.close();
     dos.flush();
     dos.close();
    }
    catch (MalformedURLException ex)
    {
         Log.e("Debug", "error: " + ex.getMessage(), ex);
    }
    catch (IOException ioe)
    {
         Log.e("Debug", "error: " + ioe.getMessage(), ioe);
    }
    //------------------ read the SERVER RESPONSE
    try {
          inStream = new DataInputStream ( conn.getInputStream() );


          while (( str = inStream.readLine()) != null)
          {
               Log.e("Debug","Server Response "+str);
              videoreponse=str;
          }
          inStream.close();
    }
    catch (IOException ioex){
         Log.e("Debug", "error: " + ioex.getMessage(), ioex);
    }
  }


    @Override
    protected void onProgressUpdate(Void... values) {
    }

    @Override
    protected void onPostExecute(Void result) {
    super.onPostExecute(result);
    dialog.dismiss();
 }

目前我使用progressdialog ...
我想用进度条...
请请回复

Currently i am using progressdialog... I want to use progress bar... Please please reply

推荐答案

这对我的作品..希望这会为你工作为好;

This works for me .. Hope this will work for you as well;

private ProgressDialog mProgressDialog;

class ProgressBarAsync extends AsyncTask<String, String, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        mProgressDialog = new ProgressDialog(Talk.this);
        mProgressDialog.setMessage(getString(R.string.Downloading));
        mProgressDialog.setIndeterminate(false);
        mProgressDialog.setMax(100);
        mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        mProgressDialog.setCancelable(true);
        mProgressDialog.setCanceledOnTouchOutside(false);
        mProgressDialog
                .setOnDismissListener(new DialogInterface.OnDismissListener() {

                    @Override
                    public void onDismiss(DialogInterface dialog) {
                        dialog.dismiss();
                        mProgressDialog.cancel();
                        downloadFileTask.cancel(true);
                    }
                });
        mProgressDialog.show();
    }

    @Override
    protected String doInBackground(String... aurl) {

        try {
            // do your work
        } catch (Exception e) {
            Log.d(LOG_TAG, e.getMessage());
        }

        return null;
    }

    protected void onProgressUpdate(String... progress) {
        Log.d(LOG_TAG, progress[0]);
        mProgressDialog.setProgress(Integer.parseInt(progress[0]));
    }

    @Override
    protected void onPostExecute(String unused) {

    }
}

这篇关于文件上传进度条的Andr​​oid,类似WhatsApp的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆