如何规避/扩展 kotlin 应用程序的 65535 字节限制

问题描述 投票:0回答:1

我需要从 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!!)
,但我认为它不适用于持续的数据流

android arrays kotlin byte
1个回答
0
投票

仔细阅读您在评论中链接的答案,64 kB 限制是针对方法,而不是数组。第二段中的相同答案表明数组限制最高为 2Gb...您可以安全地使用字节数组来携带任何分辨率的任何图片(实际上)。 2小时长的4K视频可能有问题...

还要寻找“无线adb”,即使在使用某些USB设备时也有可能进行调试...

© www.soinside.com 2019 - 2024. All rights reserved.