一、前言:
1. 代码一:
public Bitmap getBitmapFormUrl(String url) {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(url);
//getFrameAtTime()--->在setDataSource()之后调用此方法。 如果可能,该方法在任何时间位置找到代表性的帧,
// 并将其作为位图返回。这对于生成输入数据源的缩略图很有用。
Bitmap bitmap = retriever.getFrameAtTime();
retriever.release();
return bitmap;
}
就这么几行代码还是给我抛了个IllegalArgumentException异常,最后查看文档发现在api14以后又增加了个参数。传了个空的HashMap进去就获取到了第一帧的画面….
最后整理的代码就长下面这个样子了
2. 代码二:
public static Bitmap getBitmapFormUrl(String url) {
Bitmap bitmap = null;
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
try {
if (Build.VERSION.SDK_INT >= 14) {
retriever.setDataSource(url, new HashMap<String, String>());
} else {
retriever.setDataSource(url);
}
/*getFrameAtTime()--->在setDataSource()之后调用此方法。 如果可能,该方法在任何时间位置找到代表性的帧, 并将其作为位图返回。这对于生成输入数据源的缩略图很有用。**/
bitmap = retriever.getFrameAtTime();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} finally {
try {
retriever.release();
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
}
return bitmap;
}
总结:我在使用时,代码一正常,代码二报错,你们看看遇到的有问题吗?
参考链接:https://blog.csdn.net/suyimin2010/article/details/81270325