BitmapFactory.decodeStream 导致:D/skia: --- 无法创建带有消息“未实现”的图像解码器

问题描述

我正在尝试通过使用以下命令创建位图来从 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 (将#修改为@)