2010-09-27 10 views
82

HI all,Come abilitare/disabilitare il bluetooth programmaticamente in Android

Voglio abilitare/disabilitare il bluetooth tramite il programma .. Ho il seguente codice.

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

Ma questa sorta di codice non funziona in SDK 1.5..How posso fare lo stesso in SDK 1.5.?

+0

Come non è vero funzionando? stai ricevendo un errore? Se sì, qual'è l'errore? –

+0

BluetoothAdapter mostra un errore nell'SDK 1.5 – user458295

risposta

126

questo codice ha funzionato per me ..

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

Per far funzionare tutto questo, è necessario che il seguenti permessi:

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

funziona davvero anche per me. metodo semplice per disconnettere il bluetooth nei dispositivi Android. grazie mille amico –

+6

se si aggiunge il permesso BLUETOOTH_ADMIN è funzionante, ma se non è necessario utilizzare startActivityForResult (enableBtIntent, 0); per abilitare il tuo bluetooth –

+0

Grazie per la tua utile risposta +1. voglio solo aggiungere per chi non sa come abilitarlo: mBluetoothAdapter.enable() –

5

La soluzione di prijin ha funzionato perfettamente per me. E 'solo giusto dire che sono necessarie due autorizzazioni aggiuntive:

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

Quando questi si aggiungono, attivazione e disattivazione opere impeccabile con l'adattatore di default bluetooth.

66

Qui è il modo un po 'più robusto di fare questo, anche la gestione dei valori di ritorno di enable()\disable() metodi:

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

e aggiungere le seguenti autorizzazioni nel file manifest:

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

Ma ricordate questi punti importanti:

Questa è una chiamata asincrona: verrà restituita immediatamente, e i client devono attendere che ACTION_STATE_CHANGED venga notificato delle successive modifiche allo stato dell'adattatore . Se questa chiamata restituisce true, lo stato dell'adattatore passa immediatamente da STATE_OFF a STATE_TURNING_ON, e successivamente passa a STATE_OFF o STATE_ON. Se questa chiamata restituisce false, si è verificato un problema immediato che impedirà l'accensione della scheda , ad esempio la modalità aereo o , l'adattatore è già acceso.

UPDATE:

Ok, così come implementare bluetooth ascoltatore ?:

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

E come registrare/annullare la registrazione del ricevitore?(Nella 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); 
} 
+1

se si aggiunge il permesso 'BLUETOOTH_ADMIN' è funzionante, ma se non è necessario usare' startActivityForResult (enableBtIntent, 0); 'per abilitare il bluetooth –

+1

le informazioni evidenziate sono quotate dai documenti di BluetoothAdapter, in particolare per il metodo enable() . –

18

Per abilitare il Bluetooth è possibile utilizzare uno dei seguenti funzioni:

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 seconda funzione è:

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

La differenza è che la la prima funzione fa in modo che l'app chieda all'utente il permesso di accendere il Bluetooth o di negarlo. La seconda funzione consente all'app di attivare direttamente il Bluetooth.

Per disabilitare l'uso del Bluetooth la seguente funzione:

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

NOTA/La prima funzione ha bisogno solo il seguente permesso di essere definito nel file AndroidManifest.xml:

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

Mentre, il seconda e terza funzione richiedono le seguenti autorizzazioni:

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

Ho usato il codice qui sotto per disabilitare BT quando la mia app si avvia e funziona correttamente. Non sono sicuro se questo è il modo corretto per implementare questo come google raccomanda di non utilizzare "bluetooth.disable();" senza esplicita azione dell'utente per disattivare il Bluetooth.

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

Ho solo utilizzato l'autorizzazione di seguito.

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

Aggiungere le seguenti autorizzazioni nel file manifest:

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

abilitare l'uso del bluetooth questo

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

Disabilitare l'uso del bluetooth questo

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

provare questo:

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

Aggiungi tali autorizzazioni a manifestare

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