it-swarm.com.de

So aktivieren/deaktivieren Sie Bluetooth programmgesteuert in Android

Hallo zusammen,

Ich möchte Bluetooth über das Programm aktivieren/deaktivieren. Ich habe den folgenden Code.

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

Aber diese Art von Code funktioniert in SDK 1.5 nicht. Wie kann ich dasselbe in SDK 1.5 tun?

95
user458295

Android BluetoothAdapter docs sagen, dass es seit API Level 5 verfügbar ist. API Level 5 ist Android 2.0.

Sie können versuchen, einen Backport der Bluetooth-API zu verwenden (habe es nicht persönlich versucht): http://code.google.com/p/backport-Android-bluetooth/

28
James Schek

dieser Code hat für mich funktioniert ..

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

Damit dies funktioniert, müssen Sie über die folgenden Berechtigungen verfügen:

<uses-permission Android:name="Android.permission.BLUETOOTH"/>
<uses-permission Android:name="Android.permission.BLUETOOTH_ADMIN"/>
146
prijin

Hier ist ein etwas robusterer Weg, um auch die Rückgabewerte von enable()\disable()-Methoden zu behandeln:

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;
}

Fügen Sie Ihrer Manifestdatei die folgenden Berechtigungen hinzu:

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

Denken Sie jedoch an diese wichtigen Punkte:

Dies ist ein asynchroner Aufruf: Es wird sofort zurückgegeben, und die Clients sollte auf ACTION_STATE_CHANGED warten, um über nachfolgende .__ benachrichtigt zu werden. Adapterstatus ändert sich. Wenn dieser Aufruf true zurückgibt, wird der Adapter state wechselt sofort von STATE_OFF zu STATE_TURNING_ON, und einige Zeit später wechseln Sie entweder zu STATE_OFF oder STATE_ON. Ob Dieser Aufruf gibt "false" zurück, und es gab ein sofortiges Problem verhindern, dass der Adapter eingeschaltet wird - z. B. Flugzeugmodus oder Der Adapter ist bereits eingeschaltet.

UPDATE:

Ok, wie kann man Bluetooth-Hörer implementieren ?:

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 has been on
                break;
            case BluetoothAdapter.STATE_TURNING_ON:
                // Bluetooth is turning on
                break;
            }
        }
    }
};

Und wie wird der Empfänger an-/abgemeldet? (In Ihrer Activity-Klasse)

@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);
}
80
Caner

Um Bluetooth zu aktivieren, können Sie eine der folgenden Funktionen verwenden:

 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);
        }
  }

Die zweite Funktion ist:

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

Der Unterschied besteht darin, dass die App den Benutzer mit der ersten Funktion dazu auffordert, Bluetooth einzuschalten oder abzulehnen. Mit der zweiten Funktion kann die App das Bluetooth direkt einschalten.

Um das Bluetooth zu deaktivieren, verwenden Sie die folgende Funktion:

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

HINWEIS/Die erste Funktion benötigt nur die folgende Berechtigung, um in der Datei AndroidManifest.xml definiert zu werden:

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

Während die zweite und dritte Funktion die folgenden Berechtigungen benötigen:

<uses-permission Android:name="Android.permission.BLUETOOTH"/>
<uses-permission Android:name="Android.permission.BLUETOOTH_ADMIN"/>
22
Ahmed Alnabhan

Die Lösung von Prijin hat für mich perfekt funktioniert. Es ist nur fair zu erwähnen, dass zwei zusätzliche Berechtigungen erforderlich sind:

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

Wenn diese hinzugefügt werden, funktioniert das Aktivieren und Deaktivieren mit dem Standard-Bluetooth-Adapter einwandfrei.

5
Peter Osburg

Ich habe den folgenden Code verwendet, um BT zu deaktivieren, wenn meine App gestartet wird und einwandfrei funktioniert. Nicht sicher, ob dies der richtige Weg ist, dies zu implementieren, da Google empfiehlt, "bluetooth.disable ();" nicht zu verwenden. ohne explizite Benutzeraktion zum Deaktivieren von Bluetooth.

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

Ich habe nur die unten stehende Erlaubnis verwendet.

<uses-permission Android:name="Android.permission.BLUETOOTH_ADMIN"/>
4
nik

Fügen Sie Ihrer Manifestdatei die folgenden Berechtigungen hinzu:

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

Aktivieren Sie Bluetooth, um dies zu verwenden

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

Deaktivieren Sie die Bluetooth-Funktion

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

versuche dies: 

//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();
        }
    }

Fügen Sie diese Berechtigungen im Manifest hinzu

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