Bluetooth-->藍芽開發之狀態判斷
阿新 • • 發佈:2019-02-20
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 歡迎您的加入.