gpt4 book ai didi

java - Last.fm 不会返回艺术家图像

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:33 26 4
gpt4 key购买 nike

我正在尝试从 Last.fm 获取艺术家图像并将其应用到 ImageView,但没有返回任何图像。我不确定我在这里做错了什么。

private void setLastFmArtistImage() {

try {
String imageurl = "http://ws.audioscrobbler.com/2.0/?method=artist.getimages&artist="
+ URLEncoder.encode("Andrew Bird")
+ "&api_key="
+ APIKEY
+ "&limit=" + 1 + "&page=" + 1;
InputStream in = null;

Log.i("URL", imageurl);
URL url = new URL(imageurl);
URLConnection urlConn = url.openConnection();

HttpURLConnection httpConn = (HttpURLConnection) urlConn;

httpConn.connect();

in = httpConn.getInputStream();

Bitmap bmpimg = BitmapFactory.decodeStream(in);
mArtistBackground.setImageBitmap(bmpimg);

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

最佳答案

您尝试使用的 API 返回 XML,不是图像。您需要解析响应并从响应中选择适当的图像 URL。

API documentation非常详尽,查看每个人最喜欢的艺术家的示例响应,Benny Hill , 会给你足够的方向来找到合适的图像来显示。

编辑:有关API 的示例,您可以查看官方Last.fm client。 - 但要注意,这是 GPL3 许可的东西,除非你想发布你的源代码,否则你不应该过多地使用复制和粘贴。

编辑(再次):对于一个未被 GPL3 污染的例子,试试这个:

(该示例使用友好的 XML 解析器 JSoup)

public List<LastFmImage> getLastFmImages(String artistName, int limit, int page) throws IOException {
String apiUrl = "http://ws.audioscrobbler.com/2.0/?method=artist.getimages&artist="
+ URLEncoder.encode(artistName)
+ "&api_key="
+ APIKEY
+ "&limit=" + limit + "&page=" + page;

Document doc = Jsoup.connect(apiUrl).timeout(20000).get();
Elements images = doc.select("images");

ArrayList<LastFmImage> result = new ArrayList<LastFmImage>();
final int nbrOfImages = images.size();
for (int i = 0; i < nbrOfImages; i++) {
Element image = images.get(i);
String title = image.select("title").first().text();
Elements sizes = image.select("sizes").select("size");
final int nbrOfSizes = sizes.size();
for (int j = 0; j < nbrOfSizes; j++) {
Element size = sizes.get(i);

result.add(new LastFmImage(title, size.text(),
size.attr("name"),
Integer.parseInt(size.attr("width")),
Integer.parseInt(size.attr("height"))));
}
}
return result;
}

还有 LastFmImage 类:

public class LastFmImage {
public String mTitle;
public String mUrl;
public String mName;
public int mWidth;
public int mHeight;

public LastFmImage(String title, String url, String name, int width, int height) {
mTitle = title;
mUrl = url;
mName = name;
mWidth = width;
mHeight = height;
}
}

关于java - Last.fm 不会返回艺术家图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8999173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com