2010-07-02 15 views
21

हां, मुझे पता है कि एंड्रॉइड पहले से ही ब्लूटूथ हेडसेट प्रोफ़ाइल लागू कर चुका है, लेकिन यह ऑडियो गेटवे रोल में है, हेडसेट रोल में नहीं।एंड्रॉइड फोन को ब्लूटूथ हेडसेट के रूप में कैसे बनाया जाए?

मैं जो करना चाहता हूं वह एंड्रॉइड फोन पर एक एप्लीकेशन विकसित करना है जो ब्लूटूथ हेडसेट के रूप में कार्य करेगा, इसलिए यह मेरे लैपटॉप से ​​ ब्लूटूथ से कनेक्ट हो सकता है। जब मैं किसी को फोन करने का प्रयास करता हूं, तो मैं उसे डायल करने के लिए अपने फोन का उपयोग कर सकता हूं, और मेरा एप्लिकेशन मेरे लैपटॉप, पर ब्लूटूथ के माध्यम से आवाज को अग्रेषित करेगा और लैपटॉप पर चल रहे एक अन्य एप्लिकेशन को ध्वनि डेटा प्राप्त होगा और उन्हें स्काइप पर अग्रेषित करेगा या जीटीकॉक या कुछ वीओआईपी कार्यक्रम अन्य।

दूसरे शब्दों में, मैं हेडसेट में हेडसेट प्रोफ़ाइल को एंड्रॉइड फोन पर कैसे लागू कर सकता हूं? अग्रिम में धन्यवाद!

+0

मुझे समान funcationality चाहिए। मैं पीसी से कॉल करना चाहता हूं ऑडियो (VOICE_DOWNLINK) को स्पीकर फोन के रूप में पीसी पर वापस भेज दिया गया है। लेकिन माइक को फोन पर रखें – Mark

+0

यह एक छोटा अनुरोध नहीं है; एक मिनट में ब्लूज़ में आपको एक की आवश्यकता होगी) एसडीपी रिकॉर्ड में हाथ से मुक्त भूमिका जोड़ें। बी) एसडीपी रिकॉर्ड से ऑडियो गेटवे निकालें। सी) हेडसेट की नकल करने के लिए डिवाइस की फोन की कक्षा बदलें। यह सिर्फ हाथ से मुक्त प्रोफाइल से कनेक्ट करने के लिए है। जहां तक ​​ऑडियो भेजना आदि, यह एक और चुनौती है। मुझे यकीन नहीं है कि bluedroid के लिए भी इसका समर्थन है; आपको कस्टम कर्नेल की आवश्यकता हो सकती है। – TwinPrimesAreEz

उत्तर

4

एंड्रॉयड की ओर से मुझे लगता है कि सबसे अच्छा समाधान आपके कंप्यूटर में सेवा करने के लिए कनेक्शन को खोलने के लिए है:

URL url = new URL("http://192.186.0.1/path/to/service"); 
URLConnection connection = url.openConnection(); 

एक OutputStream के रूप में यह प्राप्त करें:

OutputStream out = new BufferedStream(connection.getOutputStream()); 

और उसके बाद रिकॉर्ड किए गए डेटा को भेजने के लिए AudioRecord का उपयोग करें:

public static final int DEFAULT_SAMPLE_RATE = 8000; 
private static final int DEFAULT_BUFFER_SIZE = 4096; 
private static final int CALLBACK_PERIOD = 4000; 

AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT, 
      DEFAULT_SAMPLE_RATE, AudioFormat.CHANNEL_CONFIGURATION_DEFAULT, 
      AudioFormat.ENCODING_DEFAULT, DEFAULT_BUFFER_SIZE); 
recorder.setPositionNotificationPeriod(CALLBACK_PERIOD); 

int bytesRead = 0; 
ByteBuffer buffer = ByteBuffer.allocateDirect(DEFAULT_BUFFER_SIZE); 
while ((bytesRead = recorder.read(buffer, DEFAULT_BUFFER_SIZE)) > 0) { 
    out.write(buffer.array(), 0, bytesRead); 
} 

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

मेरे पास नहीं है इस कोड का परीक्षण किया, इसलिए मुझे 100% यकीन नहीं है कि यह काम करेगा।

अगली बात ऑडियो पर इच्छा ऐप में स्थानांतरित करने के लिए मशीन पर होगी, लेकिन यह मेरे अनुभव से ऊपर है। मुझे कल्पना है कि आपको वर्चुअल ड्राइवर या ऐसा कुछ करना होगा। डेस्कटॉप ऐप से फोन में भेजे गए ऑडियो के लिए भी व्यस्त तंत्र करना होगा (मुझे उस हिस्से में दिलचस्पी है क्योंकि फिल्मों को देखने के लिए एक अच्छा वायरलेस हेडसेट भी होगा)।

यहां मेरे 2 सेंट हैं; मैं जानना चाहता हूं कि यह काम करता है या नहीं। ;)

+0

वॉयस कॉल के दौरान फोन लाइन से ऑडियो स्ट्रीम रिकॉर्डिंग फर्मवेयर/ड्राइवर स्तर पर अधिकांश एंड्रॉइड फोन पर अवरुद्ध है। आप कुछ फोन पर ऐसी कार्यक्षमता अनलॉक करने के लिए कस्टम कर्नेल का उपयोग कर सकते हैं। – kord

1

मुझे नहीं पता कि मैं असली प्रश्न या आपका मुख्य लक्ष्य समझ गया हूं ... लेकिन मैंने here पोस्ट किया था और एंड्रॉइड में ब्लूटूथ के माध्यम से अपने हेडसेट से ध्वनि कैसे प्राप्त और भेजता है।

मुझे आपकी मदद करने की उम्मीद है ...

संबंधित मुद्दे