【问题标题】:Create a ArrayList of byte Array in Android在Android中创建一个字节数组的ArrayList
【发布时间】:2012-11-20 05:05:48
【问题描述】:

我想将来自服务器的 httpresponse 字节连续读取到一个数组中。

我正在创建一个最大大小为 2048 的字节数组。

所以,我想创建一个动态增加的数组,我发现 ArrayList 是解决方案。

我该如何克服这个解决方案?

任何帮助将不胜感激

【问题讨论】:

  • 是的..实际上我想要这个用于录音并通过 http 请求和响应播放相同的内容......所以在一秒钟内录制时它听了大约 20 次但在播放时它只能接收 2到 20 个数据中的 5 个字节

标签: java android arraylist bytearray byte


【解决方案1】:

您可以在从服务器读取字节时使用ByteArrayOutputStream 来累积字节。我不会使用ArrayList<Byte>,因为它需要将Byte 中的每个字节值装箱。

当您想访问已累积的字节时,只需在ByteArrayOutputStream 上调用toByteArray()

【讨论】:

  • 嗨 tedd,我还想将记录的数据发送到 arraylist 并将其发送到服务器...我该怎么做? .. 我也必须像上面一样进行发送
  • @GMRamesh - 您记录的数据在ArrayList<Byte>?看看你是否可以在 ByteArrayOutputStream 中捕获它。
  • 没有记录的数据不在 ArrayList.... 我正在将记录的字节数组直接发送到服务器,那是我在发送到服务器时丢失了一些字节
  • @GMRamesh - 听起来您需要某种类型的缓冲区队列,以便在记录时将充满字节的缓冲区放入队列并传输到服务器,然后从中获取下一个缓冲区队列。这样,只有当队列溢出时,事情才会丢失。 (如果你根本无法像你录制的那样快速发送到服务器,那么如果你录制的时间足够长,这肯定会发生。)
  • @GMRamesh - 我建议您打开一个单独的问题,了解为什么您的队列解决方案不起作用。发布您正在使用的代码以及您希望它做什么以及出了什么问题的描述。谈话偏离了最初的问题,重新开始会更有成效。
【解决方案2】:

您可以有一个字节数组,例如:

List<Byte> arrays = new ArrayList<Byte>();

将其转换回数组

Byte[] soundBytes = arrays.toArray(new Byte[arrays.size()]);

-你也可以使用ByteArrayInputStreamByteArrayOutputStream

例如:

InputStream inputStream = socket.getInputStream();  

// read from the stream  
ByteArrayOutputStream baos = new ByteArrayOutputStream();  
byte[] content = new byte[ 2048 ];  
int bytesRead = -1;  
while( ( bytesRead = inputStream.read( content ) ) != -1 ) {  
    baos.write( content, 0, bytesRead );  
} // while  

// now, as you have baos in hand, I don't think you still need a bais instance  
// but, to make it complete,
// now you can generate byte array input stream as below    
ByteArrayInputStream bais = new ByteArrayInputStream( baos.toByteArray() );  

【讨论】:

  • @GMRamesh 这也适用于 Android。然而,正如我在my answer 中指出的那样,使用ArrayList<Byte> 是一个非常昂贵的解决方案。
  • @GMRamesh 首先我给出的解决方案在both java and android 上工作,是的,我已经编辑了我的答案..请看一下
  • 嗨 vivek,请检查以下链接并告诉我您是否知道解决方案.....stackoverflow.com/questions/13469835/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
相关资源
最近更新 更多