我想将DrawingCache(在我的活动类中)创建的位图传递给AIDL服务。但是这不会传递给服务。即使我的服务中的storeImage方法也不打印我的日志。虽然如果我从资源中获取任何位图(png),然后将其从我的活动传递给AIDL服务,它就可以工作。无法将位图从活动传递到AIDL服务
由于某些限制,我无法将WRITE_EXTERNAL_STORAGE权限添加到我的活动类,这就是为什么我将此位图传递给服务以将其存储在Sdcard中的原因。如果暂时将此权限添加到我的活动中,并且将活动类中的过程存储起来,那么只有图像被正确存储。但是,如果我将这个图像放在资源文件夹中,然后将它发送给AIDL服务,则不会调用storeImage方法。
此代码适用于大多数设备,但很少有设备无法工作。这是使用view.getDrawingCache()创建的位图是错误的吗?
这里是代码块:
view.buildDrawingCache();
bitmap = view.getDrawingCache();
//This code block sends the bitmap to the service
if (logProvider != null && logProvider.isServiceRunning()) {
logProvider.storeBitmap(bitmap);
}
缩放位图的技巧。我认为这是位图的大小。因此,对于我的情况,我可以得出结论,发送一个位图到远程服务有一定的大小限制。现在代码也在三星平板电脑上工作。这是我做的:bitmap = Bitmap.createScaledBitmap(bitmap,bitmap.getWidth()/ 2,bitmap.getHeight()/ 2,true); – Gaurav 2012-02-15 19:59:02
如果你在做IPC,确实有一些尺寸限制。此外,它可能有点慢,它可能是一个好主意,而不是传输,例如,PNG压缩图像。为确保不会达到IPC大小限制,您可以始终以大块的形式发送图像数据。 – harism 2012-02-15 21:38:12
@Garry有趣......感谢您的回复 – Rich 2012-02-15 23:49:36