Android 将数据从 ByteBuffer 存储到 Storage
Posted
技术标签:
【中文标题】Android 将数据从 ByteBuffer 存储到 Storage【英文标题】:Android Store data from ByteBuffer to Storage 【发布时间】:2017-08-23 05:12:47 【问题描述】:我正在使用第三方 sdk 广播流,添加回调后,我成功获得了音频的 ByteBuffer
,但是当我将其保存到 sdcard 时无法播放。
这是我的代码的 sn-p
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();
【问题讨论】:
【参考方案1】:尝试改变这个:-
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();
在操作或全部复制后最终关闭byteBuffer。
【讨论】:
同样的问题无法播放文件 写入文件时没有错误,唯一的问题是我无法播放mp3文件 你是如何创建文件的?寻找扩展和所有以上是关于Android 将数据从 ByteBuffer 存储到 Storage的主要内容,如果未能解决你的问题,请参考以下文章
Android jni 数据类型丢失精度(ByteBuffer,int)
如何在android的MediaCodec上下文中使用ByteBuffer