2010-09-27 15 views
82

HI all,Jak włączyć/wyłączyć bluetooth programowo w Androidzie

Chcę włączyć/wyłączyć bluetooth poprzez program .. Mam następujący kod.

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

Ale ten rodzaj kodu nie działa w SDK 1.5 .. Jak mogę zrobić to samo w SDK 1.5.?

+0

Jak to nie działa? Czy pojawia się błąd? Jeśli tak, jaki jest błąd? –

+0

BluetoothAdapter pokazuje błąd w SDK 1.5 – user458295

Odpowiedz

126

ten kod działa dla mnie ..

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

Aby to działało, trzeba mieć następujące uprawnienia:

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

to naprawdę działa również dla mnie. prosta metoda na odłączenie bluetooth w urządzeniach z systemem Android. dziękuję bardzo kolego. –

+6

jeśli dodasz BLUETOOTH_ADMIN uprawnienia to działa, ale jeśli nie, musisz użyć funkcji startActivityForResult (enableBtIntent, 0); aby włączyć bluetooth –

+0

Dziękujemy za użyteczne odpowiedzi +1. po prostu chcę dodać, kto nie wie, jak go włączyć: mBluetoothAdapter.enable() –

5

Rozwiązanie prijin działało idealnie dla mnie. To jest po prostu fair wspomnieć, że potrzebne są dwa dodatkowe uprawnienia:

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

Gdy są one dodawane, włączanie i wyłączanie prace bezbłędne z adapterem domyślne Bluetooth.

66

Oto nieco bardziej wydajny sposób to zrobić, również obchodzenia wartości powrotów enable()\disable() metod:

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

i dodaj następujące uprawnienia do swojego pliku manifestu:

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

ale pamiętaj te ważne punkty:

To jest połączenie asynchroniczne: nastąpi natychmiast, a klienci powinni nasłuchiwać ACTION_STATE_CHANGED, aby otrzymywać powiadomienia o kolejnych zmianach stanu adaptera . Jeśli to wywołanie zwróci wartość true, stan adaptera natychmiast przejdzie z stanu STATE_OFF do stanu STATE_TURNING_ON, , a później zostanie przełączony do stanu STATE_OFF lub STATE_ON. Jeśli to wywołanie zwróci wartość false, wystąpił natychmiastowy problem, który uniemożliwi włączenie adaptera - na przykład tryb samolotowy lub adapter jest już włączony.

UPDATE:

Ok, tak jak wdrożyć bluetooth słuchacza ?:

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

I jak zarejestrować/wyrejestrować odbiornik?(W swojej klasie 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

jeśli dodasz uprawnienie "BLUETOOTH_ADMIN" to działa, ale jeśli nie, to musisz użyć 'startActivityForResult (enableBtIntent, 0);' aby włączyć swój bluetooth –

+1

podświetlone informacje są cytowane z dokumentów adaptera BluetoothAdapter, specjalnie dla metody enable() . –

18

aby włączyć Bluetooth można użyć jednej z następujących funkcji:

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

Drugą funkcją jest:

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

Różnica polega na tym, że Pierwsza funkcja sprawia, że ​​aplikacja prosi użytkownika o pozwolenie na włączenie Bluetooth lub odmowę. Druga funkcja powoduje, że aplikacja włącza bezpośrednio Bluetooth.

aby wyłączyć Bluetooth należy stosować następujące funkcję:

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

UWAGA/Pierwsza funkcja potrzebuje tylko następujące uprawnienia mają być zdefiniowane w pliku AndroidManifest.xml:

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

podczas gdy z druga i trzecia funkcja wymaga następujących uprawnień:

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

Użyłem poniższego kodu, aby wyłączyć BT, gdy moja aplikacja uruchamia się i działa dobrze. Nie jestem pewien, czy to jest poprawny sposób na wdrożenie tego jako google zaleca, aby nie używać "bluetooth.disable();" bez wyraźnego działania użytkownika, aby wyłączyć Bluetooth.

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

Użyłem tylko uprawnienia poniżej.

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

Dodaj następujące uprawnienia do swojego pliku manifestu:

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

Włącz tryb pracy Bluetooth To

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

wyłączyć używać Bluetooth to

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

spróbuj tego:

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

Dodaj te uprawnienia w oczywisty

<uses-permission android:name="android.permission.BLUETOOTH"/> 
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 
Powiązane problemy