दिलचस्प पोस्ट
JQuery इवेंट हैंन्डलर्स – "बेस्ट" विधि क्या है मैं प्रोग्राम को कई लाइनों में लेआउट में एक-एक करके बटन कैसे जोड़ूं? छवि स्केलिंग फ़ायरफ़ॉक्स / इंटरनेट एक्सप्लोरर में खराब गुणवत्ता का कारण बनती है, लेकिन क्रोम नहीं पैकेज नाम (Google Analytics) के लिए कोई मेल क्लाइंट नहीं मिला – एकाधिक उत्पादफ़्लॉवर और बिल्डटैप आईओएस एसडीके का उपयोग करके इंटरनेट कनेक्शन की जांच करें PostgreSQL में रिक्त स्थान पर अतिरिक्त स्थान पर कब्जा करना क्या है? यूएनसी पर पावरशेल्ड गेट-चाइलिटाम को गति कैसे करें प्रोग्रामिंग भाषा के रूप में आर कैसे सीखें? .NET WinForms ऐप में फ़ॉन्ट डीपीआई को कैसे नियंत्रित करें XML फ़ाइलों को कैसे पढ़ा और लिखना है? WPF WebBrowser नियंत्रण – स्थिति: स्क्रॉलिंग के दौरान तय तत्व कूदता (विंडोज 8) एबीआई के लिए VB6 / VBScript परिवर्तन फ़ाइल एन्कोडिंग कैसे एक मवेन प्लगइन में निर्भरता को बाहर करने के लिए? वर्तमान पृष्ठ के लिए नेविगेशन मेनू को हाइलाइट करें MySQL में सप्ताहांत और छुट्टियों के अलावा दिनांक अंतर को कैसे गिनना

एक ब्लूटूथ डिवाइस कनेक्ट होने पर प्रोग्रामेटिक रूप से कैसे बताएंगे? (एंड्रॉइड 2.2)

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

यह संभव है कि मैं उन्हें अपने फोन की ब्लूटूथ डिवाइस सूची में सूचीबद्ध करता हूं और यह उनकी कनेक्शन स्थिति बताता है।

Solutions Collecting From Web of "एक ब्लूटूथ डिवाइस कनेक्ट होने पर प्रोग्रामेटिक रूप से कैसे बताएंगे? (एंड्रॉइड 2.2)"

ACTION_ACL_CONNECTED, ACTION_ACL_DISCONNECT_REQUESTED, और ACTION_ACL_DISCONNECTED प्रसारणों को सुनने के लिए इरादे फ़िल्टर का उपयोग करें:

public void onCreate() { ... IntentFilter filter = new IntentFilter(); filter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED); filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED); filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED); this.registerReceiver(mReceiver, filter); } //The BroadcastReceiver that listens for bluetooth broadcasts private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); if (BluetoothDevice.ACTION_FOUND.equals(action)) { ... //Device found } else if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) { ... //Device is now connected } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) { ... //Done searching } else if (BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED.equals(action)) { ... //Device is about to disconnect } else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) { ... //Device has disconnected } } }; 

कुछ नोट्स:

  • एप्लिकेशन स्टार्टअप पर कनेक्ट किए गए डिवाइसों की सूची पुनर्प्राप्त करने का कोई तरीका नहीं है। ब्लूटूथ API आपको QUERY की अनुमति नहीं देता है, इसके बदले यह आपको परिवर्तनों को सुनने के लिए अनुमति देता है।
  • उपरोक्त समस्या के आस-पास एक गड़बड़ काम सभी ज्ञात / युग्मित उपकरणों की सूची को प्राप्त करना होगा … फिर प्रत्येक व्यक्ति से कनेक्ट करने का प्रयास करना (यह निर्धारित करने के लिए कि क्या आप कनेक्ट हैं)।
  • वैकल्पिक रूप से, आप पृष्ठभूमि सेवा को ब्लूटूथ एपीआई देख सकते हैं और डिवाइस को बाद में अपनी ऐप के उपयोग के लिए डिस्क पर लिख सकते हैं।

मेरे उपयोग के मामले में मैं केवल यह देखना चाहता था कि एक ब्लूटूथ हेडसेट वीओआईपी ऐप के लिए जुड़ा हुआ है या नहीं। निम्न समाधान मेरे लिए काम किया है:

 public static boolean isBluetoothHeadsetConnected() { BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); return mBluetoothAdapter != null && mBluetoothAdapter.isEnabled() && mBluetoothAdapter.getProfileConnectionState(BluetoothHeadset.HEADSET) == BluetoothHeadset.STATE_CONNECTED; } 

बेशक आपको ब्लूटूथ अनुमति की आवश्यकता होगी:

 <uses-permission android:name="android.permission.BLUETOOTH" /> 

उनके उत्तर के लिए स्काईलारसटटन का बहुत बड़ा धन्यवाद। मैं इसे अपनी प्रतिक्रिया के रूप में पोस्ट कर रहा हूं, लेकिन क्योंकि मैं कोड पोस्ट कर रहा हूं, मैं टिप्पणी के रूप में उत्तर नहीं दे सकता। मैंने पहले ही अपना जवाब बढ़ाया है, इसलिए मैं किसी भी बिंदु की तलाश नहीं कर रहा हूं। बस इसे आगे भुगतान करना

किसी कारण से एंड्रॉइड स्टूडियो द्वारा ब्लूटूथ एडाप्टर। एक्शन_एसीएल_CONNECTED हल नहीं किया जा सकता है। शायद यह एंड्रॉइड 4.2.2 में नापसंद था? यहाँ उनके कोड का एक संशोधन है पंजीकरण कोड समान है; रिसीवर कोड थोड़ा अलग है मैं इसका उपयोग उस सेवा में करता हूं जो एक ब्लूटूथ-जुड़े ध्वज को अपडेट करता है जो एपी संदर्भ के अन्य भागों में है।

  public void onCreate() { //... IntentFilter filter1 = new IntentFilter(BluetoothDevice.ACTION_ACL_CONNECTED); IntentFilter filter2 = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED); IntentFilter filter3 = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED); this.registerReceiver(mReceiver, filter1); this.registerReceiver(mReceiver, filter2); this.registerReceiver(mReceiver, filter3); } //The BroadcastReceiver that listens for bluetooth broadcasts private final BroadcastReceiver BTReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) { //Do something if connected Toast.makeText(getApplicationContext(), "BT Connected", Toast.LENGTH_SHORT).show(); } else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) { //Do something if disconnected Toast.makeText(getApplicationContext(), "BT Disconnected", Toast.LENGTH_SHORT).show(); } //else if... } };