답변:
이는 RemoteView에 대한 모든 변경 사항이 직렬화되어 있기 때문입니다 (예 : 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;
}
newHeight를 충분히 작게 선택하고 (화면에 표시해야하는 모든 사각형에 대해 ~ 100) 위젯에 사용하면 문제가 해결됩니다. :)
비트 맵을 바이트 배열로 압축 한 다음 이와 같은 다른 활동에서 압축을 풀 수 있습니다.
압박 붕대!!
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] bytes = stream.toByteArray();
setresult.putExtra("BMP",bytes);
압축 해제 !!
byte[] bytes = data.getByteArrayExtra("BMP");
Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);