2012-06-15 108 views
0

我使用此代碼啓動藍牙:藍牙的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(它應該返回true)並且調用enable()返回false,以便顯示「Error enabled bluetooth。」(啓用藍牙的錯誤)。我猜是因爲它已經開啓。之後,我的藍牙符號(在狀態欄中)消失了。 任何提示?

當然我有權限。

+0

請在您的問題中包含logcat輸出。 –

+0

我可以在真正的手機中使用它。我的模擬器沒有藍牙 – Ton

+0

如果你的手機不能使用logcat,你應該首先解決這個問題。您是否在手機上啓用了USB調試?你有哪個電話? –

回答

2

未經用戶確認您不能啓用藍牙正確的權限。您需要這樣做,

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

將出現一個對話框,要求用戶啓用藍牙的權限,如下所示。

enter image description here

如果用戶回答「是」,系統將開始啓用藍牙,一旦該過程完成後(或失敗),焦點將返回到應用程序。

+0

我沒有啓用它的問題。我有問題要求國家。 IsEnabled()總是返回false。如果它是正確的(藍牙關閉),我可以用Enable()打開並工作!!。 但是,如果它已經打開,isEnable()返回false(錯誤),我的應用程序使用enable()。很顯然,這失敗了,因爲它已經開始。謝謝。 – Ton

+0

對不起...一切正常。問題出在另一個地方。我很尷尬。無論如何謝謝你試圖幫助我。 – Ton

+0

如果適配器實例爲空,那麼仍然是「設備支持藍牙」?它實際上應該是設備不支持藍牙。 –

3

確保您在清單文件

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

當然我有權限。 – Ton

+1

嘗試了上面的完全相同的代碼,它工作正常(當然有權限)。你在模擬器上使用它嗎?唯一可以幫助的方法是看到LogCat輸出 –

+0

是的,有時它也適用於我。我注意到當我從threaf發起活動時失敗了。它會是嗎? – Ton

1

要檢查藍牙狀態,以編程:

  1. 添加以下權限: -

    android.permission.BLUETOOTH

  2. 使用下面的函數對於啓用藍牙: -

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 

private void turnOn() { 

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

}