您的位置:首页 > 产品设计 > UI/UE

Bluetooth-->蓝牙开发之状态判断

2016-07-27 14:21 555 查看
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 欢迎您的加入.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  蓝牙 bluetooth le