2017-03-11 38 views
-2

私はOLXのようなAndroidアプリを開発しています。ギャラリーに広告やコース選択用の画像を追加して自分のサーバーにアップロードすることができます。しかし、大きな画像をアップロードするには長い時間がかかります。Androidアプリで画像アップロードを高速化する方法は?

この問題を解決するにはどうすればよいですか?

私はVolleyライブラリを使用して画像をアップロードしています。より良い図書館はありますか?

+0

画像 – knownUnknown

+0

をアップロードするためにレトロフィットを使用してみてください、あなたがBASE64に画像を変換していますか? –

+0

はいAzhar osws私はbase64を使用しています。ビットマップを文字列に変換してから、リモートサーバに投稿してメモリを解放します。 – aym1781969

答えて

0

使用この

Retrofit retrofit = new Retrofit.Builder().client(okHttpClient).baseUrl(domain) 
      .addConverterFactory(GsonConverterFactory.create()).build(); 
    Service service = retrofit.create(Service.class); 

    RequestBody requestBody = RequestBody.create(MediaType.parse("*/*"), file); 

    final MultipartBody.Part fileToUpload = MultipartBody.Part.createFormData("file", file.getName(), requestBody); 
    final RequestBody filename = RequestBody.create(MediaType.parse("text/plain"), file.getName()); 

    Call<ServerResponse> upload = service.uploadFile(fileToUpload, filename); 

    upload.enqueue(new Callback<ServerResponse>() { 
     @Override 
     public void onResponse(Call<ServerResponse> call, final Response<ServerResponse> response) { 
      final ServerResponse serverResponse = response.body(); 
      if (serverResponse.getSuccess()) { 
       //Handle Response 
      } 
     } 

     @Override 
     public void onFailure(Call<ServerResponse> call, Throwable t) { 
      if(t instanceof SocketTimeoutException){ 
       Toast.makeText(getApplicationContext(), "Unable To Upload\nError: Socket Time out. Please try again", Toast.LENGTH_LONG).show(); 
      } 
      t.printStackTrace(); 
     } 
    }); 

サービスインタフェース

public interface Service { 
@Multipart 
@POST("path/upload.php") 
Call<ServerResponse> uploadFile(@Part MultipartBody.Part file, @Part("file") RequestBody name); 

}

+0

Adnan Momin、あなたは正しいと思いますが、それはもっと複雑ですね? – aym1781969

+0

@ aym1781969このリンクを使用してhttps://www.youtube.com/playlist?list=PLvhXArWo3eVxIMKJE5_zU1zb-ZHQISQT_を学習してください。それは簡単です – knownUnknown

1

あなたの質問は非常に広範であるが、ここではいくつかのアイデアです:

  • 小さいサイズにあなたのイメージのサイズを変更:ユーザーは12-16メガピクセルの画像をアップロードかもしれないが、しかし、1920×1080が十分により通常よりあり、これは〜2メガピクセルで、はるかに小さくなります。
  • ロッシー圧縮を使用する別の形式を使用してください。 75%の品質のJPEG画像は100%とほとんど区別できませんが、サイズは2または3倍小さくなります。
  • 要求のバッファサイズを大きくする:バッファサイズを大きくするほどパケットが少なくなり、アップロードが高速になります。ユーザーの接続が非常に悪い場合(パケット損失が非常に高い場合)、パケットのサイズが小さくなることがあります。

最初の2点でパフォーマンスが向上します。サーバーから地理的に遠い場合は、最後の点で少し改善が見られるかもしれません。

関連する問題