2016-07-18 19 views
2

wie Fortschrittsbalken in Voll-Multipart-Anfrage zu laden Bilder zu verwenden. Ich verwende Bibliothek für mehrteilige Anfrage. mein mehrtAnforderungsCode istVolley Multipart Anfrage mit Fortschrittsbalken

SimpleMultiPartRequest smr = new SimpleMultiPartRequest(Request.Method.POST, BASE_URL, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        Log.d("Response", response); 
        try { 
         JSONObject jObj = new JSONObject(response); 
         String message = jObj.getString("message"); 

         Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show(); 

        } catch (JSONException e) { 
         // JSON error 
         e.printStackTrace(); 
         Toast.makeText(getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show(); 
        } 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show(); 
     } 
    }); 

    smr.addFile("image", imagePath); 
    smr.addMultipartParam("name", fileType, fileName);   
    MyApplication.getInstance().addToRequestQueue(smr); 

jetzt i progressbar für das Hochladen von Datei wie folgt hinzufügen möchten:

progress bar - 1

oder

enter image description here

Antwort

-3

hinzufügen ProgressBar auf Ihre Aktivität Layout Datei:

<ProgressBar 
    android:id="@+id/progressBar" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="20dp" 
    android:visibility="visible"/> 

Implementieren Sie die com.android.volley.Response.ProgressListener Schnittstelle in Ihrer Aktivität und implementieren die abstrakte Methode onProgress(long, long):

public class UploadActivity extends AppCompatActivity implements Response.ProgressListener { 

    private ProgressBar progressBar; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_upload); 

     progressBar = (ProgressBar) findViewById(R.id.progressBar); 
    } 

    @Override 
    public void onProgress(long transferredBytes, long totalSize) { 
     int percentage = (int) ((transferredBytes/((float)totalSize)) * 100); 
     // updating progress bar value 
     progressBar.setProgress(percentage); 
    } 
} 

ein Zuhörer Auf Ihrem SimpleMultiPartRequest Beispiel Upload-Fortschritt für die Verfolgung:

smr.setOnProgressListener(this); 

Beispiel Verfahren ein Bild hochladen :

private void uploadFileToServer() { 
    SimpleMultiPartRequest smr = new SimpleMultiPartRequest(Request.Method.POST, "http://posttestserver.com/post.php", 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        Log.d("Response", response); 

        Toast.makeText(getApplicationContext(), response, Toast.LENGTH_LONG).show(); 

       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show(); 
     } 
    }); 

    smr.addFile("image", "/sdcard/CnLPsSMVYAAc2hL.jpg"); 
    smr.setFixedStreamingMode(true); 
    smr.setOnProgressListener(this); 

    RequestQueue mRequestQueue = Volley.newRequestQueue(this); 
    mRequestQueue.add(smr); 
    mRequestQueue.start(); 
} 
+0

während schreiben "imple Response.ProgressListener ", kann Android den ProgressListener nicht auflösen. irgendwelche Lösungen? –

+0

Vielleicht fehlt Ihnen ein Importpaket, d. H. 'Import com.android.volley.Response.ProgressListener;'? –

+0

Nein, das ist nicht in meiner Volley-Bibliothek vorhanden. Kannst du sagen, welche Volley-Bibliothek du benutzt? Ich verwende diese beiden - kompilieren 'com.mcxiaoke.volley: library-aar: 1.0.0', kompilieren 'dev.dworks.libs: volleyplus: +' –

Verwandte Themen