2011-12-20 14 views
7

मैं समझना चाहता हूं कि सॉकेट कैसे काम करता है, विशेष रूप से मुझे डिवाइस से मीडियारेकॉर्डर द्वारा भेजे गए स्ट्रीम को प्राप्त करने के लिए सर्वर पक्ष के लिए कुछ कोड नमूने चाहिए।सर्वर पर एंड्रॉइड स्ट्रीम ऑडियो

किसी भी मदद के लिए बहुत बहुत धन्यवाद।

मेरा असली अंतिम इरादा डिवाइस में बात करना और पीसी पर सुनना है, केवल एक दिशा।

फिलहाल मैं निम्नलिखित कोड का उपयोग कर धारा से बाहर भेजने में सक्षम हूँ:

String hostname = "192.168.1.10"; 
int port = 8000; 
Socket socket = null; 
    try { 
     socket = new Socket(InetAddress.getByName(hostname), port); 
    } catch (UnknownHostException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket); 

recorder = new MediaRecorder(); 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
recorder.setOutputFile(pfd.getFileDescriptor()); 

    try { 
     recorder.prepare(); 
    } catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

recorder.start(); 
+0

पीसी पर आप किस भाषा का उपयोग कर रहे हैं? – Axis

+0

मैं .NET प्लेटफॉर्म का उपयोग करता हूं, vb.net या C# वही है। – Giuseppe

उत्तर

4

ठीक लगता है, लेकिन मैं व्यक्तिगत रूप से डिवाइस पर ऑडियो बफ़र और एक अन्य से सर्वर को भेजने के लिए पसंद करेंगे आपके जैसे सॉकेट को सीधे रिकॉर्डर डालने की बजाय धागा। चूंकि स्थानीय रूप से बफरिंग आपको कनेक्शन ब्रेक को गहन तरीके से संभालने की अनुमति देगी।

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

काम करने के लिए, आपको रिकॉर्डिंग को स्थानीय बफर में लिखना होगा और उस बफर पर नए डेटा के लिए अलग थ्रेड चेक रखना होगा और जितनी जल्दी हो सके सर्वर को भेजें।

+2

कुछ उदाहरण बिंदु? – Giuseppe