पर अशक्त रिटर्न एंड्रॉयड 7 में एसेट निर्देशिका से बिटमैप्स डिकोड करने के लिए कैसे?BitmapFactory.decodeStream एंड्रॉयड 7
मेरे एप्लिकेशन Marshmallow अप करने के लिए Android संस्करण पर अच्छी तरह से चल रहा है। एंड्रॉइड 7 के साथ यह संपत्ति निर्देशिका से छवियों को लोड करने में विफल रहता है।
मेरे कोड:
private Bitmap getImage(String imagename) {
// Log.dd(logger, "AsyncImageLoader: " + ORDNER_IMAGES + imagename);
AssetManager asset = context.getAssets();
InputStream is = null;
try {
is = asset.open(ORDNER_IMAGES + imagename);
} catch (IOException e) {
// Log.de(logger, "image konnte nicht gelesen werden: " + ORDNER_IMAGES + imagename);
return null;
}
// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeStream(is, null, options);
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, PW, PH);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
// Lesen des Bitmaps in der optimierten Groesse
return BitmapFactory.decodeStream(is, null, options);
}
नतीजतन (केवल Android 7) BitmapFactory.decodeStream
रिक्त है। यह सही ढंग से एक पुराने एंड्रॉइड एपीआई काम करता है।
डिबग मोड मैं निम्नलिखित संदेश को देखने में:
09-04 10: 10: 50.384 6274-6610/MyApp डी/skia: --- SkAndroidCodec :: NewFromStream लौटे अशक्त
क्या कोई मुझे कारण बता सकता है और कोडिंग को कैसे ठीक किया जाए?
संपादित करें: इस बीच मैंने पाया, कि पहले BitmapFactory.decodeStream को हटाने के लिए जस्ट डीकोडबॉड्स = सत्य के साथ एक सफल बिटमैप फैक्टरी.decodeStream बाद में JustDecodeBounds = false के साथ होता है। कारण को नहीं जानते और बिटमैप आकार के माप को प्रतिस्थापित करने के बारे में नहीं जानते।
मेरा अनुमान है कि आपकी समस्या आपके संपत्ति के लिए विशेष रूप से है। मैं तो बस का परीक्षण [मेरी किताब के नमूने में से एक] (https://github.com/commonsguy/cw-omnibus/tree/master/Bitmaps/InSampleSize) है कि संपत्ति से छवियों को लोड करता है, एक नेक्सस 9 एंड्रॉयड 7.0 चल रहा है पर। यह काम तो ठीक करता है। – CommonsWare