我需要从 USB 获取 1024*768 图像数据(图像已经是 PNG 格式)并将其转换为字节数组,我这样做了,但应用程序不断崩溃
我发现这是因为字节数组的限制是64kb,而我需要的比单个变量要多得多(因为我必须使用一个仅使用一个字节数组的函数来在手机屏幕上显示图像) 进行大小为 65534 的人工测试效果很好,但有 65535 次崩溃(我需要为图像分配超过 300kb)
简化代码:
//IS is the InputStream
//Get size of image in advance (A 32bits unsigned integer)
var by = ByteArray(4)
val l = IS!!.read(by,0,4)
//Convert from byte array to integer
var siz: Int = 10000
siz = ByteBuffer.wrap(by).order(ByteOrder.LITTLE_ENDIAN).getInt()
//Error: siz == 230.000, witch is more than 65535
by = ByteArray(siz)
IS!!.read(by,0,siz)
//Convert to bitmap (bt is declared before), and this is why i cannot divide the array
bt = BitmapFactory.decodeByteArray(by,0,by.size)
也尝试过
BitmapFactory.decodeStream(IS!!)
,但我认为它不适用于持续的数据流
仔细阅读您在评论中链接的答案,64 kB 限制是针对方法,而不是数组。第二段中的相同答案表明数组限制最高为 2Gb...您可以安全地使用字节数组来携带任何分辨率的任何图片(实际上)。 2小时长的4K视频可能有问题...
还要寻找“无线adb”,即使在使用某些USB设备时也有可能进行调试...