एंड्रॉइड में ब्लूटूथ प्रोग्राम को सक्षम / अक्षम कैसे करें


104

मैं प्रोग्राम के माध्यम से ब्लूटूथ को सक्षम / अक्षम करना चाहता हूं। मेरे पास निम्न कोड है।

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();    
if (!mBluetoothAdapter.isEnabled()) {
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);

लेकिन यह कोड एसडीके 1.5 में काम नहीं कर रहा है। मैं इसे कैसे कारगर बना सकता हूं?


यह कैसे काम नहीं कर रहा है? क्या आपको कोई त्रुटि हो रही है? यदि हां, तो त्रुटि क्या है?
एडम ड्रिसकोल

1
ब्लूटूथ
एडेप्टर

जवाबों:


30

एंड्रॉइड ब्लूटूथ एडेप्टर डॉक्स का कहना है कि यह एपीआई स्तर 5. एपीआई स्तर 5 एंड्रॉइड 2.0 के बाद से उपलब्ध है।

आप ब्लूटूथ API के बैकपोर्ट का उपयोग करने की कोशिश कर सकते हैं (व्यक्तिगत रूप से इसे आजमाया नहीं गया है): http://code.google.com/p/backport-android-bluaxy/


164

इस कोड ने मेरे लिए काम किया ।।

//Disable bluetooth
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();    
if (mBluetoothAdapter.isEnabled()) {
    mBluetoothAdapter.disable(); 
} 

इस काम के लिए, आपके पास निम्नलिखित अनुमतियाँ होनी चाहिए:

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

यह वास्तव में मेरे लिए भी काम करता है। Android उपकरणों में ब्लूटूथ को डिस्कनेक्ट करने की सरल विधि। बहुत बहुत धन्यवाद दोस्त।
अमित थापर

7
यदि आप BLUETOOTH_ADMIN अनुमति जोड़ते हैं तो यह काम करता है, लेकिन यदि आपको startActivityForResult (enableBtIntent, 0) का उपयोग करने की आवश्यकता नहीं है; अपने ब्लूटूथ को सक्षम करने के लिए
माजिद गोल्शादी

1
आपके उपयोगी उत्तर के लिए धन्यवाद +1। बस मैं यह जोड़ना चाहता हूं कि कौन नहीं जानता कि इसे कैसे सक्षम किया जाए: mBluaxyAdapter.enable ()
क्रिस सिम

97

यहाँ यह करने का एक और अधिक मजबूत तरीका है, enable()\disable()तरीकों की वापसी मूल्यों को भी संभालना :

public static boolean setBluetooth(boolean enable) {
    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    boolean isEnabled = bluetoothAdapter.isEnabled();
    if (enable && !isEnabled) {
        return bluetoothAdapter.enable(); 
    }
    else if(!enable && isEnabled) {
        return bluetoothAdapter.disable();
    }
    // No need to change bluetooth state
    return true;
}

और अपनी अनुमति फ़ाइल में निम्नलिखित अनुमतियाँ जोड़ें:

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

लेकिन इन महत्वपूर्ण बिंदुओं को याद रखें:

यह एक अतुल्यकालिक कॉल है: यह तुरंत वापस आ जाएगा, और ग्राहकों को बाद के एडेप्टर राज्य परिवर्तनों के बारे में सूचित करने के लिए ACTION_STATE_CHANGED सुनना चाहिए। यदि यह कॉल सत्य हो जाता है, तो एडेप्टर स्थिति तुरंत STATE_OFF से STATE_TURNING_ON में परिवर्तित हो जाएगी, और कुछ समय बाद STATE_OFF या STATE_ON में परिवर्तित हो जाएगी। यदि यह कॉल गलत आती है, तो एक तत्काल समस्या थी जो एडॉप्टर को चालू होने से रोक देगी - जैसे कि हवाई जहाज मोड, या एडेप्टर पहले से चालू है।

अपडेट करें:

ठीक है, तो ब्लूटूथ श्रोता कैसे लागू करें ?:

private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        final String action = intent.getAction();

        if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
            final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
                                                 BluetoothAdapter.ERROR);
            switch (state) {
            case BluetoothAdapter.STATE_OFF:
                // Bluetooth has been turned off;
                break;
            case BluetoothAdapter.STATE_TURNING_OFF:
                // Bluetooth is turning off;
                break;
            case BluetoothAdapter.STATE_ON:
                // Bluetooth is on
                break;
            case BluetoothAdapter.STATE_TURNING_ON:
                // Bluetooth is turning on
                break;
            }
        }
    }
};

और रिसीवर को पंजीकृत / अपंजीकृत कैसे करें? (अपनी Activityकक्षा में)

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // ...

    // Register for broadcasts on BluetoothAdapter state change
    IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
    registerReceiver(mReceiver, filter);
}

@Override
public void onStop() {
    super.onStop();

     // ...

    // Unregister broadcast listeners
    unregisterReceiver(mReceiver);
}

1
यदि आप BLUETOOTH_ADMINअनुमति जोड़ते हैं तो यह काम है लेकिन अगर आपको startActivityForResult(enableBtIntent, 0);अपने ब्लूटूथ को सक्षम करने के लिए उपयोग करने की आवश्यकता नहीं है
माजिद गोल्शादि

1
हाइलाइट की गई जानकारी ब्लूटूथ एडॉप्टर डॉक्स से उद्धृत की गई है, विशेष रूप से सक्षम () विधि के लिए।
केविन ली

हे, डॉक्स कहते हैं कि Bluetooth should never be enabled without direct user consent. If you want to turn on Bluetooth in order to create a wireless connection, you should use the ACTION_REQUEST_ENABLE Intent, which will raise a dialog that requests user permission to turn on Bluetooth. The enable() method is provided only for applications that include a user interface for changing system settings, such as a "power manager" app.इसका क्या मतलब है? पूर्व के लिए। मैंने आपके कोड से एक छोटा सा ऐप बनाया और यह काम कर गया। लेकिन अगर मुझे Play Store पर अपलोड करना है, तो यह काम नहीं करेगा?
हिलाल

@ हीरालाल यह काम करेगा। लेकिन उपयोगकर्ताओं को स्थापना से पहले सहमति देने की आवश्यकता है। वे इस तरह एक संवाद देखेंगे: pewinternet.org/2015/11/10/…
Caner

23

ब्लूटूथ को सक्षम करने के लिए आप निम्नलिखित कार्यों में से किसी एक का उपयोग कर सकते हैं:

 public void enableBT(View view){
    BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    if (!mBluetoothAdapter.isEnabled()){
        Intent intentBtEnabled = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
        // The REQUEST_ENABLE_BT constant passed to startActivityForResult() is a locally defined integer (which must be greater than 0), that the system passes back to you in your onActivityResult() 
        // implementation as the requestCode parameter. 
        int REQUEST_ENABLE_BT = 1;
        startActivityForResult(intentBtEnabled, REQUEST_ENABLE_BT);
        }
  }

दूसरा कार्य है:

public void enableBT(View view){
    BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    if (!mBluetoothAdapter.isEnabled()){
        mBluetoothAdapter.enable();
    }
}

अंतर यह है कि पहला फ़ंक्शन ऐप को उपयोगकर्ता को ब्लूटूथ चालू करने या अस्वीकार करने की अनुमति देता है। दूसरा फ़ंक्शन सीधे ब्लूटूथ पर ऐप को चालू करता है।

ब्लूटूथ को अक्षम करने के लिए निम्न फ़ंक्शन का उपयोग करें:

public void disableBT(View view){
    BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    if (mBluetoothAdapter.isEnabled()){
        mBluetoothAdapter.disable();
    }
}

नोट / पहले फ़ंक्शन को AndroidManifest.xml फ़ाइल में परिभाषित करने के लिए केवल निम्न अनुमति की आवश्यकता है:

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

जबकि, दूसरे और तीसरे कार्यों के लिए निम्नलिखित अनुमतियों की आवश्यकता होती है:

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

मुझे लगता है कि पैरामीटर (देखें दृश्य) neccessary नहीं है
CitrusO2

6

प्राजिन के समाधान ने मेरे लिए पूरी तरह से काम किया। यह उल्लेख करना उचित है कि दो अतिरिक्त अनुमतियों की आवश्यकता है:

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

जब ये जोड़े जाते हैं, तो डिफ़ॉल्ट ब्लूटूथ एडाप्टर के साथ काम करने में सक्षम और अक्षम कर देता है।


4

जब मेरा ऐप लॉन्च हुआ और ठीक काम किया तो मैंने बीटी को निष्क्रिय करने के लिए नीचे दिए गए कोड का उपयोग किया। सुनिश्चित नहीं है कि यह सही तरीका है क्योंकि इसे लागू करने के लिए Google "bluetooth.disable ();" का उपयोग नहीं करने की सलाह देता है। ब्लूटूथ बंद करने के लिए स्पष्ट उपयोगकर्ता कार्रवाई के बिना।

    BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();
    bluetooth.disable();

मैंने केवल नीचे की अनुमति का उपयोग किया है।

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

2

अपनी घोषणा फ़ाइल में निम्नलिखित अनुमतियाँ जोड़ें:

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

ब्लूटूथ का उपयोग सक्षम करें

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();    
if (!mBluetoothAdapter.isEnabled()) {
    mBluetoothAdapter.enable(); 
}else{Toast.makeText(getApplicationContext(), "Bluetooth Al-Ready Enable", Toast.LENGTH_LONG).show();}

ब्लूटूथ को डिसेबल करें

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();    
if (mBluetoothAdapter.isEnabled()) {
    mBluetoothAdapter.disable(); 
}

0

इसे इस्तेमाल करे:

//this method to check bluetooth is enable or not: true if enable, false is not enable
public static boolean isBluetoothEnabled()
    {
        BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        if (!mBluetoothAdapter.isEnabled()) {
            // Bluetooth is not enable :)
            return false;
        }
        else{
            return true;
        }

    }

//method to enable bluetooth
    public static void enableBluetooth(){
        BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        if (!mBluetoothAdapter.isEnabled()) {
            mBluetoothAdapter.enable();
        }
    }

//method to disable bluetooth
    public static void disableBluetooth(){
        BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        if (mBluetoothAdapter.isEnabled()) {
            mBluetoothAdapter.disable();
        }
    }

प्रकट में इन अनुमतियों को जोड़ें

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.