2011-10-06 125 views
50

我想检查是否在任何Android设备上定期启用蓝牙。有没有我可以用BroadcastReceiver来捕捉的意图,还是有其他方法可以做到这一点?如何检查蓝牙是否以编程方式启用?

+0

只是检查出这个[链接](http://developer.android.com/guide/topics/wireless/bluetooth.html#SettingUp),并遵守所有的步。我希望这个帮助。 – Uttam

回答

124

你去那里:

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
if (mBluetoothAdapter == null) { 
    // Device does not support Bluetooth 
} else { 
    if (!mBluetoothAdapter.isEnabled()) { 
     // Bluetooth is not enable :) 
    } 
} 

随着uses-permission

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

感谢您的简短答复! – androidnoob

+7

如果需要蓝牙许可才能进行此检测,请不要忘记将其设置为不需要: Murphy

+0

最佳方式http: //stackoverflow.com/a/21010026/2624806 :) – CoDe

6

在这里,我有其他的选择,因为这个问题的答案。

首先在您的Manifest文件中添加以下行。

<uses-feature android:name="android.hardware.BLUETOOTH" android:required="false"/> 

现在,您要检查蓝牙支持能力的位置,请使用以下代码。

boolean isBluetoothSupported = getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH); 
+0

它与“BluetoothAdapter.getDefaultAdapter()”有什么不同? – CoDe

+1

我认为android:require应该是false。因为它只会在那些支持蓝牙的设备上工作。 –

+1

这个错字让我哭了。我必须解决它。 – rekire

2

使用可以使用

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 

用于检查BT连接

mBluetoothAdapter.getProfileConnectionState(BluetoothHeadset.HEADSET) == BluetoothHeadset.STATE_CONNECTED 

用于检查BT断开

mBluetoothAdapter.getProfileConnectionState(BluetoothHeadset.HEADSET) == BluetoothHeadset.STATE_DISCONNECTED 
+0

问题不在于检查是否连接了耳机,但是我正在查找这个,所以+1和谢谢:) – Alexandr

2

要检查蓝牙状态,ON或OFF,编程:

BluetoothAdapter btAdapter = ((Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR1) 
      ?((BluetoothManager)mContext.getSystemService(Context.BLUETOOTH_SERVICE)).getAdapter() 
       :(BluetoothAdapter.getDefaultAdapter())); 

     if(btAdapter==null){ 
     return; 
     } 
     if(btAdapter.getState()==BluetoothAdapter.STATE_ON){ 
      //Bluetooth is ON 
     } 

您还可以收听意图的行动:

BluetoothAdapter.ACTION_STATE_CHANGED

1

这是我如何与@ xjaphx的答案的帮助下做到了,稍作简化版本:

private boolean getBlueToothOn(){ 
    BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter(); 
     return btAdapter != null && btAdapter.isEnabled(); 
    } 

<uses-permission android:name="android.permission.BLUETOOTH" /> 
4
public boolean isBluetoothEnabled() 
    { 
     BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
     return mBluetoothAdapter.isEnabled(); 

    } 

在manifest文件权限:蓝牙

<uses-permission android:name="android.permission.BLUETOOTH" /> 
相关问题