web-dev-qa-db-fra.com

Comment activer/désactiver Bluetooth par programme dans Android

Salut à tous,

Je veux activer/désactiver Bluetooth via le programme .. J'ai le code suivant.

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

Mais ce type de code ne fonctionne pas dans le SDK 1.5 .. Comment puis-je faire la même chose dans le SDK 1.5?

95
user458295

Android BluetoothAdapter docs indique qu'il est disponible depuis le niveau 5 de l'API. Le niveau 5 de l'API est Android 2.0.

Vous pouvez essayer d'utiliser un backport de l'API Bluetooth (je ne l'ai pas essayé personnellement): http://code.google.com/p/backport-Android-bluetooth/

28
James Schek

ce code a fonctionné pour moi ..

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

Pour que cela fonctionne, vous devez avoir les autorisations suivantes:

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

Voici un moyen un peu plus robuste de procéder ainsi, en gérant également les valeurs de retour des méthodes 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;
}

Et ajoutez les autorisations suivantes dans votre fichier manifeste:

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

Mais rappelez-vous ces points importants:

Il s’agit d’un appel asynchrone: il retournera immédiatement, ainsi que les clients devrait écouter ACTION_STATE_CHANGED pour être averti des prochains l'état de l'adaptateur change. Si cet appel renvoie la valeur true, l'adaptateur state passera immédiatement de STATE_OFF à STATE_TURNING_ON, et quelque temps plus tard, transition vers STATE_OFF ou STATE_ON. Si cet appel renvoie false alors il y avait un problème immédiat qui va empêcher l’activation de l’adaptateur, tel que le mode Avion ou le l'adaptateur est déjà allumé.

METTRE À JOUR:

Ok, alors comment implémenter Bluetooth Listener ?:

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

Et comment enregistrer/désinscrire le destinataire? (Dans votre classe 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);
}
80
Caner

Pour activer le Bluetooth, vous pouvez utiliser l’une des fonctions suivantes:

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

La deuxième fonction est:

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

La différence est que la première fonction oblige l'application à demander à l'utilisateur l'autorisation d'activer le Bluetooth ou de le refuser. La deuxième fonction permet à l'application d'activer le Bluetooth directement.

Pour désactiver le Bluetooth, utilisez la fonction suivante:

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

REMARQUE/La première fonction n'a besoin que de l'autorisation suivante pour être définie dans le fichier AndroidManifest.xml:

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

Alors que, les deuxième et troisième fonctions ont besoin des autorisations suivantes:

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

La solution de prijin a parfaitement fonctionné pour moi. Il est juste de mentionner que deux autorisations supplémentaires sont nécessaires:

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

Lorsque ceux-ci sont ajoutés, l'activation et la désactivation fonctionnent parfaitement avec l'adaptateur Bluetooth par défaut.

5
Peter Osburg

J'ai utilisé le code ci-dessous pour désactiver BT lorsque mon application est lancée et fonctionne correctement. Pas sûr que ce soit la bonne façon de l'implémenter, car Google recommande de ne pas utiliser "bluetooth.disable ();" sans action explicite de l'utilisateur pour désactiver Bluetooth.

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

J'ai seulement utilisé l'autorisation ci-dessous.

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

Ajoutez les autorisations suivantes dans votre fichier manifeste:

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

Activer Bluetooth utiliser cette

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

Désactiver Bluetooth utiliser cette

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

essaye ça: 

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

Ajouter ces autorisations dans le manifeste

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