大家好,我之前一直想写一个关于蓝牙的博客,可惜一直没有时间现在我辞职了打算写一篇关于Android蓝牙的博客。我想将这篇博客分为两部分来写,第一部分我打算写经典蓝牙这一篇就是关于经典蓝牙的,第二部分ble蓝牙(低功耗蓝牙)我很快会更新ble蓝牙的部分。这一篇是我第一次系统性的博客,如若写的不好还请见谅(写的不好的部分大家可以在@我)。
一、蓝牙的起源。
蓝牙的创始人是瑞典爱立信公司,爱立信早在1994年就已进行研发。1997年,爱立信与其他设备生产商联系,并激发了他们对该项技术的浓厚兴趣。 1998年2月,5个跨国大公司,包括爱立信、诺基亚、IBM、东芝及Intel组成了一个特殊兴趣小组(SIG),他们共同的目标是建立一个全球性的小范围无线通信技术,即现在的蓝牙。
蓝牙的名字来源于10世纪丹麦国王Harald Blatand——英译为Harold Bluetooth(因为他十分喜欢吃蓝梅,所以牙齿每天都带着蓝色)。在行业协会筹备阶段,需要一个极具有表现力的名字来命名这项高新技术。行业组织人员,在经过一夜关于欧洲历史和未来无限技术发展的讨论后,有些人认为用Blatand国王的名字命名再合适不过了。Blatand国王将现在的挪威,瑞典和丹麦统一起来;他的口齿伶俐,善于交际,就如同这项即将面世的技术,技术将被定义为允许不同工业领域之间的协调工作,保持着个各系统领域之间的良好交流,例如计算,手机和汽车行业之间的工作。名字于是就这么定下来了。
二、Android蓝牙的打开与关闭。
Android做蓝牙开发需要蓝牙权限打开蓝牙的方式以下这三种:
1、调用系统弹出框提示用户打开,会有提示框提示用户是否打开蓝牙
Intent enabler = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enabler, REQUEST_ENABLE);
2、强制打开蓝牙,手机上没有任何提示。
mDefaultAdapter = BluetoothAdapter.getDefaultAdapter();
mDefaultAdapter.enable();
3、跳转到系统设置中让用户自己打开
Intent enabler = new Intent(Settings.ACTION_BLUETOOTH_SETTINGS);
startActivityForResult(enabler, REQUEST_ENABLE);
这三种打开蓝牙的方式中第二种会受到系统或者第三方权限管理应用的阻止而存在打开蓝牙失败的情况。我们一般打开蓝牙可以用以下这种模式:
1° 采用强制开启 Bluetooth 的方式打开 Bluetooth ,但是调用强制开启 Bluetooth 代码之前,我们自己在应用中提示用户,我们的应用需要开启 Bluetooth ,让用户自己选择是否开启 Bluetooth 。自己在应用中提示用户我们需要开启 Bluetooth 相对于弹出系统的提示框提示用户当前应用需要开启 Bluetooth 的优势在于我们可以控制提示的内容和提示的方式以及 UI。
2° 假若用户选择了开启 Bluetooth,但是强制开启 Bluetooth 失败,比如系统自带的权限管理禁止你的应用开启 Bluetooth ,我们不去提示用户说当前系统禁止了应用开启 Bluetooth,让用户自己去解除禁止。这样显然用户体验很差。这种情况下,我们再去调用弹出系统提示框提醒用户打开 Bluetooth即可。这种方式一般系统或者第三方应用不会禁止。
3° 如果弹出系统提示框提醒用户打开 Bluetooth 有问题的话,最后采用提示用户自己去系统 Bluetooth 设置中打开 Bluetooth,跳转到系统的 Bluetooth 设置界面。
4、强制关闭蓝牙:
mDefaultAdapter.disable();
5、跳转到系统设置中让用户自己关闭
Intent enabler = new Intent(Settings.ACTION_BLUETOOTH_SETTINGS);
startActivityForResult(enabler, REQUEST_ENABLE);
考虑到涉及用户隐私和用户体验,推荐以下方式关闭 Bluetooth :
1° 采用强制关闭 Bluetooth 的方式关闭 Bluetooth ,但是调用强制关闭 Bluetooth 代码之前,我们自己在应用中提示用户,我们的应用需要关闭 Bluetooth ,让用户自己选择是否关闭 Bluetooth 。自己在应用中提示用户我们需要关闭 Bluetooth ,暂时没有发现 Android 有提供了弹出系统提示框提示用户关闭 Bluetooth 的 API。
2° 假若用户选择了关闭 Bluetooth,但是强制关闭 Bluetooth 失败,比如系统自带的权限管理禁止你的应用关闭 Bluetooth ,我们不去提示用户说当前系统禁止了应用关闭 Bluetooth,让用户自己去解除禁止。这样显然用户体验很差。这种情况下,我们提示用户“由于某些原因导致应用关闭 Bluetooth 失败,请到系统设置中自己关闭 Bluetooth”,然后跳转到系统 Bluetooth 设置中。
三、蓝牙的扫描和关闭