2017-08-23 248 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文件 –