2012-11-29 10 views
11

मैंने पहले से ही अन्य डिवाइस की खोज की है और मैंने इसे पहले ही जोड़ा है। कम से कम मेरे पास अपने एंड्रॉइड फोन पर जोड़े गए उपकरणों की सूची में है।यह पता लगाने के लिए कि पहले से ही खोजा गया और जोड़ा गया डिवाइस उपलब्ध है?

अब BluetoothSocket.connect() पर दो समस्याएं हो सकती हैं:

  1. रिमोट डिवाइस बंद है या अन्यथा अनुपलब्ध
  2. रिमोट डिवाइस जोड़ी के बारे में भूल है क्योंकि यह केवल एक जोड़ी कर सकते हैं अन्य डिवाइस और एक अलग फोन

    => फिर कनेक्ट एक निश्चित टाइमआउट के बाद विफल रहता है।

यह जाँच करने के लिए है कि एक पहले से ही बनती डिवाइस वास्तव में उपलब्ध है और याद है कि यह यह करने के लिए कनेक्ट किए बिना अपने फोन के साथ रखा गया था संभव है? यह पता लगाने के बारे में नहीं है कि डिवाइस कनेक्ट है या नहीं। जोड़ा और दृश्यमान कनेक्ट के समान नहीं है।

+0

क्या आपने निम्न लिंक को चेक किया था: http://stackoverflow.com/questions/14228289/android-device-bluetooth-pairing http://stackoverflow.com/questions/6675208/to-discover-and-pair-bluetooth - शायद आप यहां कुछ विचार प्राप्त कर सकते हैं। –

उत्तर

3

  1. डिवाइस बाध्य नहीं
  2. डिवाइस के लिए बाध्य:

मेरे अनुभव में मैं 3 अलग संभव बीटी डिवाइस स्थितियों का इलाज मैं sorr टी रिपोर्ट हूँ लेकिन आपके डिवाइस को दूसरे से जानने का कोई तरीका नहीं है, इसे जोड़ने के प्रयास के अलावा सीमा में है। और, यह जानने के लिए कि रिमोट डिवाइस ने युग्मन को हटा दिया है, उसे पूछना होगा, उदा। कनेक्ट करें और देखें कि क्या यह युग्मन करने के लिए पूछता है।

अन्य तरीकों से उपयोगकर्ता कनेक्ट करने से पहले इन्हें पुष्टि करने के लिए मिलेगा, या शायद बाहरी चैनल टीसीपी/आईपी या वाईफाई या एनएफसी का उपयोग कर सकते हैं। यदि उनमें से कोई भी जादुई शक्ति ही एकमात्र विकल्प नहीं होगा। : -,)

1
  1. कनेक्ट किए गए डिवाइस को याद रखना वास्तव में सरल है। एक बार जब आप किसी डिवाइस से सफल हो जाते हैं तो आपको BluetoothDevice ऑब्जेक्ट मिलता है। आप getAddress() के साथ अपने अद्वितीय मैक पते की जांच कर सकते हैं। एक बार आपके पास पता साझा साझा वरीयता में सहेजने के बाद। इसमें "क्या यह जोड़ा गया था" - अगली बार जब हम BluetoothAdapter का उपयोग करते हैं और बाध्य उपकरणों की सूची प्राप्त करते हैं, तो हम उनके बीच सहेजे गए डिवाइस पते की खोज कर सकते हैं।
  2. अब हम डिवाइस के सटीक पते को जानते हैं, हम कैसे बता सकते हैं कि यह "वास्तव में उपलब्ध" है या नहीं? ठीक है, अगर यह आपके लिए "खोज" स्तर में उपलब्ध है या नहीं, तो यह जांचने के लिए डिवाइस (startDiscovery()) को खोजने और खोजने के लिए पर्याप्त है - तो आप चाल (सूची आइटम 1) जानते हैं। यदि आपको पता चला कि डिवाइस खोजने योग्य है और आपको पूर्ण कनेक्टिविटी के लिए डिवाइस का परीक्षण करने की आवश्यकता है तो आपको एक नई सॉकेट खोलनी होगी और देखें कि यह चिकनी है या नहीं। - लेकिन जुड़े
  3. डिवाइस बाध्य नहीं - और जुड़े
+3

दुर्भाग्यवश यह केवल तभी काम करता है जब अन्य डिवाइस खोजने योग्य हो – ocramot

0

आप पहले से ही जोड़ा गया डिवाइस सूची प्राप्त कर सकते हैं और वर्तमान खोज योग्य उपकरणों के साथ उन्हें सत्यापित कर सकते हैं। इसलिए यह आपको पहले से जोड़े गए डिवाइस देगा जो खोजने योग्य मोड में हैं।

लेकिन अनजान उपकरणों के लिए अनिवार्य है कि आपको उनके साथ कनेक्ट करना होगा।अगर डेटा सफलतापूर्वक रिमोट डिवाइस सक्रिय है तो उनके बीच सॉकेट कनेक्शन बनाने का प्रयास करें।

इसके अलावा आप बंधुआ स्थिति की जांच करने के लिए दूरस्थ डिवाइस के getBondState() का उपयोग कर सकते हैं और बॉन्ड किए गए राज्य परिवर्तनों के कॉलबैक के लिए ACTION_BOND_STATE_CHANGED रिसीवर पंजीकृत कर सकते हैं।

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

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