2012-11-20 35 views
2

我想要從服務器連續傳輸到一個數組中的httpresponse中讀取字節。在Android中創建一個字節數組的ArrayList

我創建與2048

的最大尺寸的字節數組所以,我想創建一個動態增加數組,我發現ArrayList的是解決方案。

我該如何克服這個解決方案?

任何幫助,將不勝感激很多

+0

你有什麼問題嗎? – kosa

+0

是的..其實我希望這個音頻記錄和通過http請求和響應播放相同...所以,雖然在一秒鐘內錄製它的收聽大約20次,但在播放時只能接收2到5個字節的數據20 so –

回答

1

你可以有一個像字節數組:

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()); 
+0

@GMRamesh這也適用於Android。但是,正如我在[我的回答](http://stackoverflow.com/a/13466932/535871)中指出的那樣,使用'ArrayList '是一個非常昂貴的解決方案。 –

+0

@GMRamesh首先給出的解決方案''java和android'',是的,我編輯我的答案..請看看它 –

+0

好吧,我會檢查並讓你知道 –

2

可以使用ByteArrayOutputStream當你從服務器讀取積累起來的字節數。我不會使用ArrayList<Byte>,因爲它需要裝入Byte中的每個字節值。

當您想要訪問已經累積的字節時,只需致電ByteArrayOutputStream即可撥打toByteArray()

+0

喜泰德,我也想發送錄製的數據在arraylist併發送到服務器...我怎麼能這樣做? ..我必須像上面一樣發送 –

+0

@GMRamesh - 您的錄製數據位於'ArrayList '?請參閱是否可以在「ByteArrayOutputStream」中捕獲它。 –

+0

沒有記錄的數據不在ArrayList ....即時發送該記錄的字節數組直接到服務器這就是yim缺少一些字節,同時發送到服務器 –