जवाबों:
ऐसा इसलिए होता है क्योंकि RemoteViews में सभी परिवर्तन क्रमबद्ध होते हैं (जैसे setInt और setImageViewBitmap)। बिटमैप भी एक आंतरिक बंडल में क्रमबद्ध हैं। दुर्भाग्य से इस बंडल में बहुत छोटे आकार की सीमा है।
आप इसे इस तरह से छवि के आकार को छोटा करके हल कर सकते हैं:
public static Bitmap scaleDownBitmap(Bitmap photo, int newHeight, Context context) {
final float densityMultiplier = context.getResources().getDisplayMetrics().density;
int h= (int) (newHeight*densityMultiplier);
int w= (int) (h * photo.getWidth()/((double) photo.getHeight()));
photo=Bitmap.createScaledBitmap(photo, w, h, true);
return photo;
}
नया होने के लिए पर्याप्त छोटा चुनें (स्क्रीन पर इसे लेने के लिए हर वर्ग के लिए ~ 100) और इसे अपने विजेट के लिए उपयोग करें, और आपकी समस्या हल हो जाएगी :)
आप बिटमैप को बाइट के ऐरे के रूप में संपीड़ित कर सकते हैं और फिर इसे इस तरह से किसी अन्य गतिविधि में जोड़ सकते हैं।
संकुचित करें!!
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] bytes = stream.toByteArray();
setresult.putExtra("BMP",bytes);
Uncompress !!
byte[] bytes = data.getByteArrayExtra("BMP");
Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
हर बार जब आप सूचना को अपडेट करते हैं तो सही तरीका setImageViewUri()
(धीमा) या setImageViewBitmap()
और फिर से उपयोग RemoteView
करना होता है।