蓝牙APP层的开启与关闭

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝牙APP层的开启与关闭相关的知识,希望对你有一定的参考价值。

参考技术A BluetoothAdapter是android提供给开发者控制蓝牙的api,使用其enable()和disable()方法,会穿过framework层,来到app层,实现蓝牙app的开启与关闭。

下面就梳理一下蓝牙app,及各个 profile Service开启与关闭的流程

BluetoothAdapter.enable()方法经过一系列流程会onCreate AdapterService,然后会调用startProfileService()

路径:packages\apps\Bluetooth\src\com\android\bluetooth\btservice\AdapterService.java

然后会调用setAllProfileServiceStates();

再接着会调用setProfileServiceState(service, state);

以startService的方法启动各个profile service
profile service有以下一些:
A2dpService
A2dpSinkService
AvrcpControllerService
GattService
HeadsetClientService
BluetoothPbapService
MapClientService
等等
它们都继承了ProfileService

所以各个协议服务都必须重写ProfileService的onStartCommand()方法

因为是enable(),传过来的state是on,所以调用doStart()

注意 mProfileStarted = start();会去调用start()方法

这个start方法是profile service定义的抽象方法,各个子类必须去实现它,所以各个协议服务都会有一个start()方法,各个协议服务的真正开启也是从start()开始的。
开启阶段分析到此为止

关闭蓝牙的流程与开启类似,从BluetoothAdapter的disable开始,会调用Adapterservice的stopProfileServices()方法

传入一个off的状态

关闭也是从startService()开始的,不过传入的状态是一个off状态

根据off状态,会走的doStop()

会走到stop()

和开启类似,stop也是profile service定义的抽象方法
各个子类必须去实现它

所以各个子类服务会在其stop方法里实现退出逻辑,到此为止

苹果手机无线和蓝牙怎么关闭自动开启

参考技术A 控制中心内关闭WiFi不是彻底关闭;
使用 iPhone、iPad 或 iPod touch 上的强制 Wi-Fi 网络
了解如何使用强制 Wi-Fi 网络,即需要订阅或付费才能使用的公共网络。
强制网络也称为“订阅”或“Wi-Fi 热点”网络。您可以在咖啡厅、网吧、宾馆、机场和其他公共场所找到这类网络。在某些国家和地区,无线运营商会赞助和维护强制网络。
加入强制 Wi-Fi 网络
要加入强制 Wi-Fi 网络,请按照以下步骤操作:
轻点“设置”>“Wi-Fi”。
轻点网络名称,然后等待出现登录屏幕。也可以轻点网络名称旁边的 ,然后轻点“加入网络”。
出现提示时,请输入用户名和密码、电子邮件地址,或接受条款和条件。
登录后,您应能够访问互联网。当您使用强制 Wi-Fi 网络时,可能需要支付服务费和其他费用。有关更多信息,请联系网络提供商。
如果您在登录网络前取消
轻点登录屏幕上的“取消”后,设备与强制 Wi-Fi 网络间的关联便会解除。
如果您轻点 按钮从 Wi-Fi 屏幕加入网络,则会显示一条信息,提示您这个网络没有接入互联网。您可以选择以下选项之一:
不连接互联网使用:这个选项会关闭“欢迎”屏幕,以及网络的自动登录功能。它会保持设备与网络的关联,并允许您以其他方式使用网络。
其他网络:这个选项会关闭“欢迎”屏幕,并解除设备与网络的关联。它可使您返回“Wi-Fi 设置”屏幕,您可以在这个屏幕选取其他网络。
取消:这个选项可使您返回“欢迎”屏幕。
自动加入 Wi-Fi 网络
iPhone、iPad 和 iPod touch 可以记住网络和登录信息,这样您在位于网络覆盖范围内时便会自动重新连接到这个网络。
如果您的设备未自动加入强制 Wi-Fi 网络,请按照以下步骤操作:
轻点“设置”>“Wi-Fi”。
轻点网络名称旁边的 。
确保“自动加入”已开启。
如果您不希望自动连接,请关闭“自动加入”。要在下次连接网络时显示“欢迎”屏幕,请关闭“自动登录”。

以上是关于蓝牙APP层的开启与关闭的主要内容,如果未能解决你的问题,请参考以下文章

苹果电脑蓝牙误关闭怎么开启?

安卓通讯开发——蓝牙的开启,搜索与传输

苹果手机无线和蓝牙怎么关闭自动开启

如何检测用户的iPhone关闭或开启的蓝牙?

三星翻盖手机如何关闭蓝牙

蓝牙蓝牙,调试 hcitool与gatttool实例