2016-07-18 16 views
2

画像をアップロードするためのマルチパートリクエストにプログレスバーを使用する方法。私はマルチパートリクエストのためにVolleyPlusライブラリを使用しています。私のマルチパートリクエストコードが進捗バー付きボレーマルチパートリクエスト

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); 

今私はこのようなファイルをアップロードするためのプログレスバーを追加したいされています

progress bar - 1

または

enter image description here

答えて

-3

あなたの活動のレイアウトにプログレスバーを追加します。ファイル:

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

は、あなたの活動にcom.android.volley.Response.ProgressListenerインタフェースを実装し、抽象メソッド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); 
    } 
} 

設定し、あなたのSimpleMultiPartRequestインスタンスにアップロードの進行状況を追跡するためのリスナー:画像をアップロードする

smr.setOnProgressListener(this); 

例の方法を:

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

"imple Response.ProgressListener "、アンドロイドはProgressListenerを解決できません。任意のソリューションですか? –

+0

おそらく、インポートパッケージ、つまり 'import com.android.volley.Response.ProgressListener;'がありません。 –

+0

これは私のvolleyライブラリにはありません。どのボレーライブラリを使用しているのか知ることができますか?私はこれら2つのコンパイル 'com.mcxiaoke.volleyを使用しています:library-aar:1.0.0'、コンパイル 'dev.dworks.libs:volleyplus:+' –