1. 程式人生 > >Bluetooth-->藍芽開發之狀態判斷

Bluetooth-->藍芽開發之狀態判斷

1:判斷裝置是否支援藍芽

BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
if (null == adapter) {
    //藍芽不支援
}

注意:

在小於等於JELLY_BEAN_MR1 (API 17)的版本中,使用BluetoothAdapter.getDefaultAdapter(),獲取BluetoothAdapter
在大於等於JELLY_BEAN_MR2 (API 18)的版本中,使用getSystemService(Context.BLUETOOTH_SERVICE),獲取BluetoothManager ,然後通過BluetoothManager.getAdapter()的方式, 獲取BluetoothAdapter.

public static BluetoothAdapter getDefaultAdapter(Context context) {
  BluetoothAdapter adapter = null;
  if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN_MR1) {
      adapter = BluetoothAdapter.getDefaultAdapter();
  } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
      final
BluetoothManager bluetoothManager = (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE); adapter = bluetoothManager.getAdapter(); } return adapter; }

藍芽相關許可權:

<!--允許配對裝置-->
<uses-permission android:name="android.permission.BLUETOOTH" />
<!--允許發現裝置-->
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!--無互動的進行操作, API>=19新增 --> <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED"/>

2:判斷藍芽是否開啟

if (defaultAdapter.isEnabled()) {
    defaultAdapter.disable();//斷開藍芽
} else {
    defaultAdapter.enable();//開啟藍芽
}

3:BluetoothAdapter 其他方法說明

StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(defaultAdapter.getName());//藍芽名稱
stringBuilder.append(" ");
stringBuilder.append(defaultAdapter.getAddress());//藍芽地址
stringBuilder.append("\nMode:");
stringBuilder.append(defaultAdapter.getScanMode());//掃描模式
stringBuilder.append(" State:");
stringBuilder.append(defaultAdapter.getState());//當前狀態
stringBuilder.append(" ");
stringBuilder.append(defaultAdapter.isDiscovering());//是否正在掃描
defaultAdapter.setName("Bluetooth Name");//設定藍芽名稱
//藍芽名稱最大支援248個位元組,但是有些裝置只能顯示前40個字元,有些只能顯示20個字元.
defaultAdapter.startDiscovery();//開始掃描藍芽裝置
defaultAdapter.cancelDiscovery();//取消掃描

defaultAdapter.getScanMode() 掃描模式說明:

20 SCAN_MODE_NONE                       //即不能連線裝置,也不能被發現
21 SCAN_MODE_CONNECTABLE                //能連線遠端裝置,但不能被遠端裝置發現
23 SCAN_MODE_CONNECTABLE_DISCOVERABLE   //即連線裝置,也能被發現.(通常情況下都是此模式.)

defaultAdapter.getState() 藍芽狀態說明

10 STATE_OFF            //藍芽已關閉
11 STATE_TURNING_ON     //藍芽正在開啟
12 STATE_ON             //藍芽已開啟
13 STATE_TURNING_OFF    //藍芽正在關閉

4:獲取已經配對的藍芽裝置

defaultAdapter.getBondedDevices();//獲取配對成功的藍芽裝置資訊

5:帶互動的開啟藍芽和可見性設定

//會彈出系統對話方塊,提示使用者是否允許藍芽裝置對其他裝置的可見性
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 120);//可被發現的持續時間
startActivity(intent);
//會彈出一個對話方塊,提示使用者是否允許開啟藍芽
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(enableBtIntent);
//開啟系統藍芽介面
Intent intent = new Intent(Settings.ACTION_BLUETOOTH_SETTINGS);
startActivity(intent);

至此: 文章就結束了,如有疑問: QQ群:274306954 歡迎您的加入.