在Kindle Fire上下载和保存图像

时间:2013-01-08 10:21:25

标签: android

我的目标是创建一个应用程序,允许我从一系列网址下载多个图像,并允许用户滑过它们。

我有点不确定如何做到这一点,因为我不知道如何将图像保存在点燃(它没有SD卡)。

有关如何从本地保存图像(以便尽快访问)的任何帮助都会很棒!

1 个答案:

答案 0 :(得分:0)

您可以在与数组循环中使用此方法。不要担心外部目录。没有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;
}

这将使用网址名称保存图片,您可以根据需要进行编辑。并保存外部存储器的图像(如果设备有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"/>