0

私は、私がvolley JsonObectRequestからの返事を得ているというURLを持っています。私ができることをしたいのは、私の外部ストレージ上のフォルダに直接それらの画像を保存するので、私はもはやインターネットからそれらをロードする必要はありません。 ...また、動画を含むこともできるダウンロードしますのでご注意くださいVolleyを使って外部のストレージ(Android)に画像/動画をダウンロードする

//ここで今、画像のURLを

JsonArrayRequest req = new JsonArrayRequest(endpoint, 
      new Response.Listener<JSONArray>() { 
       @Override 
       public void onResponse(JSONArray response) { 
        Log.d(TAG, response.toString()); 
        pDialog.hide(); 

        images.clear(); 
        for (int i = 0; i < response.length(); i++) { 
         try { 
          JSONObject object = response.getJSONObject(i); 
          Image image = new Image(); 
          image.setName(object.getString("name")); 

          JSONObject url = object.getJSONObject("url"); 
          image.setSmall(url.getString("small")); 
          image.setMedium(url.getString("medium")); 
          image.setLarge(url.getString("large")); 
          image.setTimestamp(object.getString("timestamp")); 

         } catch (JSONException e) { 
          Log.e(TAG, "Json parsing error: " + e.getMessage()); 
         } 
        } 

        mAdapter.notifyDataSetChanged(); 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.e(TAG, "Error: " + error.getMessage()); 
      pDialog.hide(); 
     } 
    }); 
を抽出するためのURL

private static final String endpoint = "http://api.androidhive.info/json/glide.json"; 

//コードを取得するためのボレーコードがあります、どのようにファイルを私の外部のボレーを使用して保存するように私はダウンロードをリクエストするのですか?ありがとうございます

答えて

1
public boolean storeImages(Bitmap imageBitmap, String fileName, String dirName, int index) { 
    File file; 
    if (isExternalStorageWritable() && isExternalStorageReadable()) { 
     file = storeImageExternalMemory(dirName, albumName, String.valueOf(index)); 
    } 
    try { 
     assert file != null; 
     FileOutputStream out = new FileOutputStream(file); 
     imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); 
     out.flush(); 
     out.close(); 
     updateImageTable(file, index); // Implement Your own method to update ur DB table, U can access file location from DB table for future use of images 
     return true; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return false; 
    } 
} 

ダウンロードした画像をビットマップに変換し、携帯電話の希望する場所に保存してください。その後、イメージを再利用できます。

 private File storeImageExternalMemory(String dirName, String mediaName) { 
    String packageName = mContext.getPackageName(); 
    File mediaStorageDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() 
      + "/Android/data/" + packageName + dirName); 

    if (!mediaStorageDir.exists()) { 
     if (!mediaStorageDir.mkdirs()) { 
      return null; 
     } 
    } 
    File mediaFile; 
    mediaFile = new File(mediaStorageDir.getPath(), mediaName + ".jpeg"); 
    return mediaFile; 
} 

/* Checks if external storage is available for read and write */ 
public boolean isExternalStorageWritable() { 
    String state = Environment.getExternalStorageState(); 
    return Environment.MEDIA_MOUNTED.equals(state); 
} 

/* Checks if external storage is available to at least read */ 
public boolean isExternalStorageReadable() { 
    String state = Environment.getExternalStorageState(); 
    return Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state); 
} 
+0

返信いただきありがとうございますが、私はサーバー上の画像にのみURLがあることに気をつけてください。だからそれに基づいて、私は実際のイメージをダウンロードするか、私はコンセプトを正しくしていないのですか? –

関連する問題