Wie überprüfe ich, ob Bluetooth programmgesteuert aktiviert ist?

73

Ich möchte regelmäßig überprüfen, ob Bluetooth auf einem Android-Gerät aktiviert ist. Gibt es irgendwelche Absichten, die ich mit BroadcastReceiver erfassen könnte, oder gibt es andere Möglichkeiten, dies zu tun?

Zerhinne
quelle
Schauen Sie sich einfach diesen Link für Bluetooth an und befolgen Sie alle Schritte. Ich hoffe diese Hilfe.
Uttam

Antworten:

178

Los geht's:

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBluetoothAdapter == null) {
    // Device does not support Bluetooth
} else if (!mBluetoothAdapter.isEnabled()) {
    // Bluetooth is not enabled :)
} else {
    // Bluetooth is enabled 
}

Mit uses-permission

 <uses-permission android:name="android.permission.BLUETOOTH" android:required="false" />
Pete Houston
quelle
Danke für die kurze und schnelle Antwort!
Zerhinne
8
Wenn für diese Erkennung nur eine Bluetooth-Berechtigung erforderlich ist, vergessen Sie nicht, diese NICHT erforderlich festzulegen: <Verwendungsfunktion android: name = "android.hardware.bluetooth" android: required = "false" />
Murphy
Ist Internet erforderlich, um Bluetooth zu überprüfen?
Portfoliobuilder
5
Nein, Sie brauchen kein Internet, um den Bluetooth-Status zu überprüfen.
Nun
7
public boolean isBluetoothEnabled()
    {
        BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        return mBluetoothAdapter.isEnabled();

    }

mit der Erlaubnis in der Manifestdatei:

<uses-permission android:name="android.permission.BLUETOOTH" />
Arun Kumar
quelle
7

Hier habe ich eine andere Alternative als Antwort auf diese Frage.

Fügen Sie zuerst die folgenden Zeilen in Ihre Manifest-Datei ein.

<uses-feature android:name="android.hardware.BLUETOOTH" android:required="false"/>

Wenn Sie nun die Bluetooth-Unterstützung überprüfen möchten, verwenden Sie den folgenden Code.

boolean isBluetoothSupported = getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
Hari Babu Mandala
quelle
Wie ist es anders mit "BluetoothAdapter.getDefaultAdapter ()"?
CoDe
1
Ich denke android: erfordern sollte falsch sein. Weil es nur bei denen funktioniert, die Bluetooth unterstützen.
Xar-e-ahmer Khan
1
Dieser Tippfehler ließ mich weinen. Ich muss es reparieren.
rekire
5

So überprüfen Sie den Bluetooth-Status programmgesteuert: EIN oder AUS:

    BluetoothAdapter btAdapter = ((Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR1)
           ?((BluetoothManager)mContext.getSystemService(Context.BLUETOOTH_SERVICE)).getAdapter()
               :(BluetoothAdapter.getDefaultAdapter()));

       if(btAdapter==null){
        return;
       }
       if(btAdapter.getState()==BluetoothAdapter.STATE_ON){
            //Bluetooth is ON
       }

Sie können auch die Absichtsaktion anhören:

BluetoothAdapter.ACTION_STATE_CHANGED

Jayesh Tembhekar
quelle
2

Verwendung kann verwenden

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

zur Überprüfung bt verbunden

mBluetoothAdapter.getProfileConnectionState(BluetoothHeadset.HEADSET) == BluetoothHeadset.STATE_CONNECTED

zur Überprüfung bt getrennt

mBluetoothAdapter.getProfileConnectionState(BluetoothHeadset.HEADSET) == BluetoothHeadset.STATE_DISCONNECTED
Srinivas
quelle
Bei der Frage geht es nicht darum zu überprüfen, ob das Headset angeschlossen ist oder nicht, aber ich schaue genau das, also +1 und danke :)
Alexandr
1

So habe ich es mit Hilfe von @ xjaphx 'Antwort gemacht, leicht vereinfachte Version:

 private boolean getBlueToothOn(){
    BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter(); 
      return btAdapter != null && btAdapter.isEnabled();
    }

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