jjzjj

Android MediaRecorder 和 setOutputFile

coder 2023-11-27 原文

我阅读了 Android SDK,发现 MediaRecorder 类可以从相机、音频或其他来源获取输入并进行压缩。通过 setOutputFile 方法,您可以指定要存储数据的位置(文件或 URI),但是如果我想将该数据存储在内存缓冲区中并通过连接发送它呢?还是在发送之前处理它?我的意思是有没有办法不创建文件而只使用内存缓冲区?

最佳答案

你当然可以稍后读取文件,在处理方式上做任何你想做的事情。假设您持有生成的音频文件的 Uri,下面是将其读入字节数组然后删除文件的代码 fragment 。

String audioUri = u.getPath();
InputStream in = new BufferedInputStream(this.getContentResolver().openInputStream(u));
byte[] b = new byte[BUFSIZE];

BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(mFileName/*mFilePath*/)));
int byteCnt = 0;
while (0 <= (byteCnt = in.read(b, 0, BUFSIZE)))
   out.write(b, 0, byteCnt);
out.flush();
out.close();
// try to delete media file
try {
   // Delete media file pointed to by Uri
   new File(getRealPathFromURI(u)).delete();
} catch (Exception ex) {}


   public String getRealPathFromURI(Uri contentUri) {
      String[] proj = { MediaStore.Images.Media.DATA };
      Cursor cursor = managedQuery(contentUri, proj, null, null, null);
      int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
      cursor.moveToFirst();
      return cursor.getString(column_index);
   }

关于Android MediaRecorder 和 setOutputFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3854163/

有关Android MediaRecorder 和 setOutputFile的更多相关文章

  1. Android MediaRecorder 和 setOutputFile - 2

    我阅读了AndroidSDK,发现MediaRecorder类可以从相机、音频或其他来源获取输入并进行压缩。通过setOutputFile方法,您可以指定要存储数据的位置(文件或URI),但是如果我想将该数据存储在内存缓冲区中并通过连接发送它呢?还是在发送之前处理它?我的意思是有没有办法不创建文件而只使用内存缓冲区? 最佳答案 你当然可以稍后读取文件,在处理方式上做任何你想做的事情。假设您持有生成的音频文件的Uri,下面是将其读入字节数组然后删除文件的代码fragment。StringaudioUri=u.getPath();Inp

随机推荐