我的目标是创建一个应用程序,允许我从一组 url 下载多个图像并允许用户滑动它们。
我有点不确定如何做到这一点,因为我不确定如何将图像保存在 kindle 上(它没有 sd 卡)。
关于如何在本地保存网络图像(尽快访问)的任何帮助都会很棒!
我的目标是创建一个应用程序,允许我从一组 url 下载多个图像并允许用户滑动它们。
我有点不确定如何做到这一点,因为我不确定如何将图像保存在 kindle 上(它没有 sd 卡)。
关于如何在本地保存网络图像(尽快访问)的任何帮助都会很棒!
您可以在数组的循环中使用此方法。不要担心外部目录。没有 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"/>