URLの配列から複数の画像をダウンロードし、ユーザーがそれらをスワイプできるようにするアプリを作成することを目指しています。
Kindleに画像を保存する方法がわからないので、これを行う方法が少しわかりません(SDカードがありません)。
Webからローカルに(できるだけ早くアクセスするために)画像を保存する方法についてのヘルプは素晴らしいでしょう!
URLの配列から複数の画像をダウンロードし、ユーザーがそれらをスワイプできるようにするアプリを作成することを目指しています。
Kindleに画像を保存する方法がわからないので、これを行う方法が少しわかりません(SDカードがありません)。
Webからローカルに(できるだけ早くアクセスするために)画像を保存する方法についてのヘルプは素晴らしいでしょう!
このメソッドは、配列とのループで使用できます。外部ディレクトリについて心配する必要はありません。SDカードスロットを備えていないデバイスは、「外部メモリ」のように機能するために、内部メモリとは別の場所にあります。
public Bitmap downloadImage(String url)
{
final DefaultHttpClient client = new DefaultHttpClient();
final HttpGet getRequest = new HttpGet(url);
try
{
HttpResponse response = client.execute(getRequest);
final int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK)
{
return null;
}
final HttpEntity entity = response.getEntity();
if (entity != null)
{
InputStream inputStream = null;
try
{
inputStream = entity.getContent();
final Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
saveImageToExternalMemory(bitmap, url); //edit the name if need
return bitmap;
}
finally
{
if (inputStream != null)
{
inputStream.close();
}
entity.consumeContent();
}
}
}
catch(IOException e)
{
getRequest.abort();
}
catch (Exception e)
{
getRequest.abort();
}
finally
{
if (client != null)
{
client.getConnectionManager().shutdown();
}
}
return null;
}
これにより、URLの名前で画像が保存され、必要に応じて編集できます。また、外部メモリ用に画像を保存します(デバイスにSDカードがあるかどうかは関係ありません)。たとえば、私はNexus 7を持っていて、それは機能します。
public void saveImageToExternalMemory(Bitmap bitmap, String name) throws IOException
{
File dir = new File(Environment.getExternalStorageDirectory().toString()+"/yourdirectoryname");
if (!dir.exists())
dir.mkdirs();
File file = new File(dir, name+ ".jpg"); //or the type you need
file.createNewFile();
OutputStream outStream = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
outStream.flush();
outStream.close();
}
この方法には
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
マニフェストで、ダウンロードには以下が必要です。
<uses-permission android:name="android.permission.INTERNET"/>