2010-10-04 79 views
7

我讀過Android SDK,我發現MediaRecorder類可以從攝像頭,音頻或其他來源獲取輸入並對其進行壓縮。通過setOutputFile方法,您可以指定要存儲數據的位置(文件或URI),但如果要將數據存儲在內存緩衝區中並通過連接發送,該怎麼辦?或者在發送之前處理它?我的意思是有沒有辦法創建一個文件,但只使用內存緩衝區?Android MediaRecorder和setOutputFile

回答

1

你當然可以在後面讀取文件,並以處理方式做任何你想做的事情。假設你將Uri保存到生成的音頻文件中,這裏是一個代碼片段,它將它讀入一個字節數組,然後刪除該文件。

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); 
    } 
相關問題