2012-04-13 16 views
11

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

विधि m = device.getClass()। GetMethod ("createRfcommSocket", नया कक्षा [] {int.class}); tmp = (BluetoothSocket) m.invoke (डिवाइस, 1);

हालांकि, हैंडफ्री कार्यक्षमता प्राप्त करने और एटी कमांड को समझने के लिए, कनेक्ट किए गए फोन को हैंडफ्री प्रोफ़ाइल पर होना चाहिए जो यूयूआईडी का उपयोग करता है: "0000111f-0000-1000-8000-00805F9B34FB"

इसलिए, हैंड्सफ्री प्रोफाइल से कनेक्शन प्राप्त करने का कोई तरीका है?

धन्यवाद!

+0

मैं ब्लूकोव लाइब्रेरी "http://bluecove.org/" का उपयोग करके एचएफ ब्लूटूथ कनेक्शन स्थापित करने में सक्षम था और अब मैं एटी कमांड का उपयोग कर कनेक्टेड फोन पर कॉल को नियंत्रित और प्रबंधित कर सकता हूं। इसके अलावा, एक पूर्ण हाथ-मुक्त कार्यक्षमता के लिए, कनेक्टेड फोन एंड्रॉइड को आवाज़ को रूट करता है लेकिन इसे प्राप्त नहीं होता है क्योंकि इसमें सिंक भूमिका नहीं है। मुझे पता है कि एससीओ चैनल एंड्रॉइड में लागू किया गया है लेकिन एक स्रोत भूमिका के रूप में (केवल हेडसेट को आवाज भेजने के लिए)। इसलिए, एंड्रॉइड में सिंक भूमिका को लागू करने का कोई तरीका है, क्या एंड्रॉइड के ब्लूज़ैक स्टैक का समर्थन करता है? – mjabdelhadi

+0

यह वही है जो मैं करने की कोशिश कर रहा हूं। क्या आप उस पर सफल रहे हैं? –

उत्तर

3

जब आपको कोई अन्य विकल्प नहीं है तो आपको केवल इस कोड का उपयोग करना चाहिए। इस कोड में 1 आरएफसीओएमएम पोर्ट है। प्रत्येक सेवा में इसका स्वयं का आरएफसीओएमएम पोर्ट होता है। यह बंदरगाह आम तौर पर 1 और 31 के बीच यादृच्छिक होता है। आपको यह पता होना चाहिए कि कौन सा पोर्ट सेवा (यहां हैंड्सफ्री प्रोफाइल) उस डिवाइस पर उपयोग कर रहा है जिसे आप कनेक्ट करना चाहते हैं।

try { clientSocket = bluetoothDevice.createRfcommSocketToServiceRecord(serviceUUID); } 
catch (IOException e) 
{ 
    // handle error 
} 

इस कोड को ब्लूटूथ का उपयोग करने के लिए और एक आप उपयोग कर रहे बदलना चाहिए सही तरीका है: आप ऐसा करने के लिए BluetoothDevice वस्तु से createRfcommSocketToServiceRecord विधि का उपयोग करने के लिए है।

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