2010-10-04 10 views
7

मैंने एंड्रॉइड एसडीके पढ़ा है और मैंने पाया है कि MediaRecorder क्लास कैमरा, ऑडियो या अन्य स्रोत से इनपुट ले सकता है और इसे संपीड़ित कर सकता है। SetOutputFile विधि के माध्यम से आप निर्दिष्ट कर सकते हैं कि आप कहां डेटा संग्रहीत करना चाहते हैं (फ़ाइल या यूआरआई), लेकिन अगर मैं उस डेटा को मेमोरी बफर में संग्रहीत करना चाहता हूं और उसे कनेक्शन पर भेजना चाहता हूं? या इसे भेजने से पहले इसे संसाधित करें? मेरा मतलब है कि फ़ाइल बनाने के लिए कोई तरीका नहीं है लेकिन केवल मेमोरी बफर का उपयोग करना है?एंड्रॉइड मीडियारेकॉर्डर और सेटऑटपुटफाइल

उत्तर

1

आप बाद में फ़ाइल को पढ़ सकते हैं और प्रसंस्करण के तरीके में जो कुछ भी चाहते हैं उसे कर सकते हैं। यह मानते हुए कि आप उरी को परिणामी ऑडियो फ़ाइल में रखते हैं, यहां एक कोड स्निपेट है जो इसे बाइट सरणी में पढ़ता है और फिर फ़ाइल को हटा देता है।

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); 
    } 
संबंधित मुद्दे