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




android-bluetooth (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
        }           
    }
};

कुछ नोट्स:

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

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

किसी कारण से BluetoothAdapter.ACTION_ACL_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...
    }
};






android-bluetooth