2017-08-23 68 views
1

我使用第三方sdk广播流并添加回调后,我成功地获得了音频的ByteBuffer,但是当我将它保存到SD卡时无法播放它。Android将数据从ByteBuffer存储到存储

这里是我的代码片段

long startedTime = -1; 

    @Override 
    public void onAudioBuffer(ByteBuffer byteBuffer, int i, long l) { 
     if (bufferedOutputStream == null) 
      createFile(); 
     Log.e(TAG, "i:" + i); 
     Log.e(TAG, "l:" + l); 
     Log.e(TAG, "byteBuffer capacity:" + byteBuffer.capacity()); 
     Log.e(TAG, "byteBuffer length:" + byteBuffer.array().length); 
     if (startedTime == -1) { 
      startedTime = System.currentTimeMillis(); 
      createFile(); 
     } else if (System.currentTimeMillis() - startedTime > 10000) { 
      try { 
       bufferedOutputStream.close(); 
       startedTime = -1; 
      } catch (IOException e) { 
       Log.e(TAG, "byteBuffer bufferedOutputStream closing err:" + e.getMessage()); 
       e.printStackTrace(); 
      } 
      return; 
     } else { 
      try { 
       byte[] bytes = new byte[byteBuffer.capacity()]; 
       byteBuffer.get(bytes, 0, bytes.length); 
       bufferedOutputStream.write(bytes); 
       byteBuffer.clear(); 
      } catch (IOException e) { 
       Log.e(TAG, "byteBuffer bufferedOutputStream writhing err:" + e.getMessage()); 
       e.printStackTrace(); 
      } 
     } 
    } 

回答

0

尝试改变这一点: -

try { 
      byte[] bytes = new byte[1024]; 
      byteBuffer.get(bytes, 0, bytes.length); 

      bufferedOutputStream.write(bytes); 

     } catch (IOException e) { 
      Log.e(TAG, "byteBuffer bufferedOutputStream writhing err:" + e.getMessage()); 
      e.printStackTrace(); 
     } 

最终操作或在逃避全部关闭后的字节缓冲区。

+0

同样的问题无法播放文件 –

+0

有什么错误? –

+0

写入文件时没有错误,唯一的是我无法播放mp3文件 –