2012-06-15 4 views
0

Я использую этот код для запуска Bluetooth:Bluetooth IsEnabled() не

BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter(); 
if(btAdapter == null) 
    returns; /no bluetooth 
if(btAdapter.isEnabled() == false) 
{ Toast("Bluetooth off. Starting it..."); 
    if(btAdapter.enable() == false) 
     Toast("Error enabling bluetooth."); 
} 

Это должно быть очень просто. Просто получает и адаптер, и если он не включен, я запускаю его.

Проблема заключается в том, что isEnabled() возвращает false, когда bluetooth действительно включен (он должен возвращать true) И вызов функции enable() возвращает false, поэтому он показывает «Ошибка включения bluetooth». Думаю, потому что он уже включен. После этого мои символы Bluetooth (в строке состояния) исчезли. Подсказка?

Конечно, у меня есть разрешения.

+0

Включите вывод логарифма в свой вопрос. –

+0

Я могу просто использовать его в реальном телефоне. У моего эмулятора нет bluetooth – Ton

+0

Если вы не можете использовать logcat с телефоном, вы должны сначала решить эту проблему. Вы включили USB-отладку на телефоне? Какой у вас телефон? –

ответ

2

Вы не можете включить Bluetooth без подтверждения пользователя. Вам необходимо сделать это так:

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 

if (mBluetoothAdapter != null) { 
    // Device supports Bluetooth 

    if (!mBluetoothAdapter.isEnabled()) { 
     // Bluetooth isn't enabled, so enable it. 
     Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
     startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); 
    } 
} 

Появится диалоговое окно с запросом разрешения на включение Bluetooth, как показано ниже.

enter image description here

Если пользователь отвечает «Да», система начнет активировать Bluetooth и фокус будет возвращаться к вашему приложению, как только процесс завершается (или не).

+0

У меня нет проблем с этим. У меня проблема с просьбой о государстве. IsEnabled() всегда возвращает false. Если это правильно (bluetooth выключен), я могу включиться с помощью Enable() и работает !!. Но если он уже включен, isEnable() возвращает false (ошибка), и мое приложение использует enable(). Очевидно, это терпит неудачу, потому что это уже было. Благодарю. – Ton

+0

Извините ... Все отлично работает. Проблема была в другом месте. Я смущен. В любом случае, спасибо за помощь. – Ton

+0

Если экземпляр адаптера имеет значение null, то все еще «Устройство поддерживает Bluetooth»? Это должно быть на самом деле устройство не поддерживает Bluetooth. –

3

чтобы иметь разрешения корректные в файле манифеста

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

Конечно, у меня есть разрешения. – Ton

+1

попробовал тот же самый код, и он отлично работает (с разрешениями, конечно). Вы используете его на эмуляторе? Единственный способ помочь - увидеть выход LogCat –

+0

Да, иногда это работает и для меня. Я замечаю, что это терпит неудачу, когда я запускаю активность из threaf. Может быть? – Ton

1

Для проверки состояния Bluetooth, ПО программно:

  1. Добавить следующие разрешения: -

    android.permission.BLUETOOTH

  2. Используйте следующую функцию Для Включить Bluetooth: -

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 

private void turnOn() { 

    if (!mBluetoothAdapter.isEnabled()) { 
     Intent enableBtIntent = new 
     Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
     startActivity(enableBtIntent); 
    } 

} 
Смежные вопросы