2013-10-24 68 views
0

我想從我的代碼禁用藍牙,但它仍然啓用,不會引發任何錯誤。 這是我的代碼。藍牙未禁用

if (m_BluetoothAdapter.isEnabled()){ 
    m_BluetoothAdapter.disable(); 
} 
if (m_BluetoothAdapter.isEnabled() == false){ 
    Toast.makeText(getApplicationContext(), "BLUETOOTH is being disabled", Toast.LENGTH_SHORT).show(); 
} 

這是我的應用程序中唯一的測試代碼。 我也把藍牙和Bluetooth_admin的權限。 Eclipse和手機都沒有提供任何錯誤,但BT保持啓用狀態。 Pl指出我做錯了什麼。
問候

更新:
嗯,我發現,如果我運行這個程序,一日一次,BT仍然啓用。
但如果我再次運行應用程序(第二次),BT被禁用。
我不知道爲什麼BT被禁用,只在第二次運行,而不是第一次了。 有什麼建議嗎?

+0

嘗試你如何初始化適配器? – Sajmon

+0

BluetoothAdapter m_BluetoothAdapter = null; //本地藍牙適配器 m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); –

回答

1

你應該知道,disable()方法使異步調用所以這個原因你的代碼似乎不工作。

換句話說,它採用藍牙時將被禁用一段時間。在這種情況下,你應該使用廣播接收器與BluetoothAdapter.ACTION_STATE_CHANGED意圖過濾器和監聽狀態的變化,然後作出適當的行動。

可用狀態STATE_ONSTATE_TURNING_OFFSTATE_OFF

也要看什麼說的文檔:

true指示適配器關閉已經開始,或直接 錯誤虛假

+0

花時間是好的,但我等了很久,看看BT是否被禁用。但即使在5分鐘後,BT仍然可以使用。 –

+0

@madiyamadiya你正在模擬器或真實設備上測試它嗎? – Sajmon

+0

仿真器不支持藍牙和wifi。我正在測試真實的設備。 WiFi工作正常,但藍牙沒有被禁用。請注意,在啓用它的過程中沒有問題。 –

0

使用this庫,它很容易使用和更友好的 也與下面的代碼

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

我使用完全相同的代碼,但它失敗。不確定你建議的圖書館。由於我在這裏相當新,所以會堅守標準。但無論如何,謝謝。 –