问题描述
我正在尝试通过使用以下命令创建位图来从 URL 下载图像
bitmapFactory.decodeStream(InputStream)
然后 imageView.setimageBitmap(bitmap)
但我总是收到此错误:
D/skia: --- 无法创建带有消息的图像解码器
'未实现'。包 com.example.flickrapp;
这是我的代码:
import 语句将放在此处...
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onStart() {
super.onStart();
Button b = (Button)findViewById(R.id.getanimage);
b.setonClickListener(new GetimageOnClickListener() {
@Override
public void onClick(View v) {
super.onClick(v);
}
});
}
public class GetimageOnClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
AsyncFlickrjsonData imagesData = new AsyncFlickrjsonData();
imagesData.execute("https://www.flickr.com/services/Feeds/photos_public.gne?tags=trees&format=json");
}
}
public class AsyncFlickrjsonData extends AsyncTask<String,Void,JSONObject> {
@Override
protected JSONObject doInBackground(String... strings) {
String flickrUrl = strings[0];
JSONObject jsonFlickr = null;
URL url = null;
try {
url = new URL(flickrUrl);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
String s1 = readStream(in);
int lengthS = s1.length();
String s = (String) s1.subSequence(15,lengthS-1);
jsonFlickr = new JSONObject(s);
} finally {
urlConnection.disconnect();
}
} catch (MalformedURLException e) {
e.printstacktrace();
} catch (IOException | JSONException e) {
e.printstacktrace();
}
return jsonFlickr;
}
@Override
protected void onPostExecute(JSONObject jsonFlickr) {
super.onPostExecute(jsonFlickr);
try {
String firstUrl = jsonFlickr.getJSONArray("items").getJSONObject(0).getString("link");
AsyncBitmapDownloader firstAsyncImage = new AsyncBitmapDownloader();
firstAsyncImage.execute(firstUrl);
Log.i("JFL",firstUrl);
} catch (JSONException e) {
e.printstacktrace();
}
}
private String readStream(InputStream in) {
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
Log.e(TAG,"IOException",e);
} finally {
try {
in.close();
} catch (IOException e) {
Log.e(TAG,e);
}
}
return sb.toString();
}
}
public class AsyncBitmapDownloader extends AsyncTask<String,Bitmap> {
ImageView firstimage = (ImageView) findViewById(R.id.image);
@Override
protected Bitmap doInBackground(String... strings) {
String imageUrl = strings[0];
Bitmap bm = null;
URL url = null;
try {
url = new URL(imageUrl);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
bm = BitmapFactory.decodeStream(in);
} finally {
urlConnection.disconnect();
}
} catch(IOException e){
e.printstacktrace();
}
return bm;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
firstimage.setimageBitmap(bitmap);
}
}
}
欢迎任何建议或想法:)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)