CN106412656B - Android智能设备快速连接蓝牙的方法 - Google Patents
Android智能设备快速连接蓝牙的方法 Download PDFInfo
- Publication number
- CN106412656B CN106412656B CN201610945276.6A CN201610945276A CN106412656B CN 106412656 B CN106412656 B CN 106412656B CN 201610945276 A CN201610945276 A CN 201610945276A CN 106412656 B CN106412656 B CN 106412656B
- Authority
- CN
- China
- Prior art keywords
- bluetooth
- android system
- native
- android
- blue tooth
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 239000011230 binding agent Substances 0.000 claims abstract description 11
- 238000004891 communication Methods 0.000 claims abstract description 7
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000011084 recovery Methods 0.000 description 7
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/41—Structure of client; Structure of client peripherals
- H04N21/422—Input-only peripherals, i.e. input devices connected to specially adapted client devices, e.g. global positioning system [GPS]
- H04N21/42204—User interfaces specially adapted for controlling a client device through a remote control device; Remote control devices therefor
- H04N21/42206—User interfaces specially adapted for controlling a client device through a remote control device; Remote control devices therefor characterized by hardware details
- H04N21/42221—Transmission circuitry, e.g. infrared [IR] or radio frequency [RF]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/436—Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
- H04N21/4363—Adapting the video stream to a specific local network, e.g. a Bluetooth® network
- H04N21/43637—Adapting the video stream to a specific local network, e.g. a Bluetooth® network involving a wireless protocol, e.g. Bluetooth, RF or wireless LAN [IEEE 802.11]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Selective Calling Equipment (AREA)
Abstract
本发明涉及Android系统领域,公开了一种Android智能设备快速连接蓝牙的方法,解决Android系统未完成启动时蓝牙遥控器不可用的问题,同时解决重启系统下蓝牙功能不可用问题。本发明在Android系统根目录下的init.rc中注册native蓝牙服务,native蓝牙服务进程在开机时启动,完成对本机蓝牙模块和蓝牙协议栈的初始化,创建新进程监听GATT连接信息,并在蓝牙遥控器请求连接时自动连接,并在Android系统启动完成后,Android系统中Bluetooth进程查找到蓝牙服务程序并进行binder通讯,兼容android系统蓝牙流程。本发明适用于Android系统的智能电视。
Description
技术领域
本发明涉及Android系统,特别涉及Android智能设备快速连接蓝牙的方法。
背景技术
传统的Android蓝牙协议栈,只有在Android系统完全启动之后才能正常使用。Android系统启动阶段,主要完成Android系统复位初始化启动和Android系统核心服务加载,然后可以运行、响应用户操作。目前大多数电视厂商的电视系统,在Android并未完成所有启动进程前,可以实现播放电视画面,但此时蓝牙遥控器并不能正常使用。此外在recovery系统下,蓝牙遥控器也无法正常使用。recovery系统是Android系统进行修复、升级的一个子系统,仅仅包含native蓝牙服务程序进程。由于Android系统中蓝牙的架构组成方式,蓝牙必须要在JAVA虚拟机运行后,由JAVA代码的进程启动。所以在recovery系统下无法使用蓝牙功能。
发明内容
本发明要解决的技术问题是:提供一种Android智能设备快速连接蓝牙的方法,解决Android系统未完成启动时蓝牙遥控器不可用的问题,同时解决recovery系统下蓝牙功能不可用问题。
为解决上述问题,本发明采用的技术方案是:在Android系统根目录下的init.rc中注册native蓝牙服务,native蓝牙服务进程在开机时启动,完成对本机蓝牙模块和蓝牙协议栈的初始化,创建新进程监听GATT连接信息,并在蓝牙遥控器请求连接时自动连接,并在Android系统启动完成后,Android系统中Bluetooth进程查找到蓝牙服务程序并进行binder通讯,兼容android系统蓝牙流程。
进一步的,本发明的具体步骤如下:
(1)创建一个采用c代码编译的native蓝牙服务程序;
(2)在Android系统根目录下的init.rc中注册一个蓝牙服务;当init进程解析rc文件时启动native蓝牙服务程序;
(3)native蓝牙服务程序启动后,加载蓝牙驱动,创建与原蓝牙服务程序通讯的binder,改造原蓝牙服务程序,由调用bluedroid改为和native蓝牙服务程序之间进行通讯;
(4)蓝牙驱动加载完成后,获取bluedroid的句柄,分别调用init和enable函数来初始化协议栈并打开蓝牙功能;
(5)新创建进程监听GATT连接信息,并在蓝牙遥控器请求连接时自动连接;
(6)Android上层应用调用蓝牙接口时,bluetooth服务与native蓝牙服务程序使用binder通讯,传递函数调用关系与参数;协议栈的回调函数也由native蓝牙服务经binder传递到bluetooth服务。
进一步的,步骤(3)使用shell脚本执行insmod命令加载蓝牙驱动,并检测是否加载完成采用Android系统标准的加载驱动方式。
进一步的,通过在代码中使用access函数查看蓝牙驱动节点文件是否存在,来判定驱动是否已经加载,并通过打开蓝牙驱动节点文件来判定驱动是否加载完成。
进一步的,如果蓝牙驱动设备节点文件不存在,等待一段时间再做检测,仍然不存在,则重新加载驱动;如果打开蓝牙驱动节点失败,则等待一段时间再次执行读取,尝试一定次数后仍然失败则结束当前进程,由init进程重启native蓝牙服务程序。
具体的,蓝牙遥控器请求连接时自动连接的方法为:第一次有蓝牙遥控器按键输出时,由协议栈完成自动回连,创建对应的input节点;当再次有蓝牙遥控器按键输出时,协议栈将数据发送到uhid,由kernel实现按键写入到对应的input节点。
本发明的有益效果是:本专利提出的快速连接蓝牙设备的方法,能够有效改善在智能电视等Android智能设备开机启动后,因为Android系统完全启动时间长,电视系统响应蓝牙遥控器操作等待时间长的问题,以及在在recovery系统下无法响应蓝牙遥控器的问题。
具体实施方式
下面以解决“Android智能电视启动快速开机TV界面显示,而Android系统未完成启动时蓝牙遥控器不可用的问题,同时解决recovery系统下蓝牙功能不可用问题”为例对本发明进行具体说明。
1、创建一个蓝牙native服务。由于Android系统启动初期完全运行c代码,为了提前实现对蓝牙设备的支持,需要使用c代码编译蓝牙服务程序,即蓝牙native服务;在init.rc文件中注册该服务,当init进程启动后,用fork函数创建蓝牙native服务进程。该进程为root组,无需专门设置优先级。Android系统启动过程中,解析到init.rc文件中蓝牙native服务相关字段时,开始运行native服务。蓝牙native服务进程运行后,使用shell脚本执行insmod命令加载蓝牙驱动,并检测是否加载完成采用Android系统标准的加载驱动方式。通过在代码中使用access函数查看蓝牙驱动节点文件是否存在,来判定驱动是否已经加载,并通过open蓝牙驱动节点文件来判定驱动是否加载完成。如果蓝牙驱动设备节点文件不存在,等待1秒再做检测,仍然不存在,则重新加载驱动;如果open蓝牙驱动节点失败,则等待500毫秒再次执行read,尝试20次后仍然失败则结束当前进程。由init进程重启蓝牙native服务。
2、当驱动加载完成后,初始化android系统的蓝牙协议栈。使用Android系统HAL方式,加载蓝牙协议栈库,获取bluedroid的句柄,分别调用init和enable函数来初始化协议栈,之后蓝牙协议栈就运行在蓝牙native服务进程中。
3、新创建线程侦听GATT连接信息。创建线程使用sBluetoothGattInterface->client->register_client,侦听GATT连接信息,当蓝牙遥控器有配对请求时,蓝牙协议栈可以将遥控器信息发送到侦听进程中,从而触发蓝牙遥控器配对。
4、当解析到连接请求是蓝牙遥控器时,触发蓝牙连接,进而启动蓝牙遥控器相关的服务程序,使蓝牙遥控器可以正常使用蓝牙连接。蓝牙遥控器发送的数据,由蓝牙协议栈通过UHID交给Linux内核处理,此过程是Android系统上蓝牙HID类型设备的标准流程。具体的来说,蓝牙自动连接可以采用如下方法:
第一次有蓝牙遥控器按键输出时,由协议栈完成自动回连,创建对应的input节点;当再次有蓝牙遥控器按键输出时,协议栈将数据发送到uhid,由kernel实现按键写入到对应的input节点。
5、Android系统启动完成后,Android系统中Bluetooth进程通过servicemanager查找到native蓝牙服务并进行binder通讯,保留Bluetooth进程所有函数,更改调用蓝牙协议栈库的方式为使用binder调用蓝牙native进程对应的函数,实现Bluetooth进程与native服务进程通讯,兼容android系统蓝牙流程。
Android上层应用调用蓝牙接口时,bluetooth服务与native蓝牙服务程序使用binder通讯,传递函数调用关系与参数;协议栈的回调函数也由native蓝牙服务经binder传递到bluetooth服务。
采用本方案后,蓝牙遥控器可以在android系统开机过程中提前7秒左右使用,避免开机时TV界面下遥控器不可操作;同时增加了recovery模式下对蓝牙遥控器的支持。
以上描述了本发明的基本原理和主要的特征,说明书的描述只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。
Claims (5)
1.Android智能设备快速连接蓝牙的方法,其特征在于,在Android系统根目录下的init.rc中注册native蓝牙服务,native蓝牙服务进程在开机时启动,完成对本机蓝牙模块和蓝牙协议栈的初始化,创建新进程监听GATT连接信息,并在蓝牙遥控器请求连接时自动连接,并在Android系统启动完成后,Android系统中Bluetooth进程查找到native蓝牙服务程序并进行binder通讯,兼容android系统蓝牙流程;
具体步骤如下:
(1)创建一个采用c代码编译的native蓝牙服务程序;
(2)在Android系统根目录下的init.rc中注册一个蓝牙服务;当init进程解析rc文件时启动native蓝牙服务程序;
(3)native蓝牙服务程序启动后,加载蓝牙驱动,创建与原蓝牙服务程序通讯的binder,改造原蓝牙服务程序,由调用bluedroid改为和native蓝牙服务程序之间进行通讯;
(4)蓝牙驱动加载完成后,获取bluedroid的句柄,分别调用init和enable函数来初始化协议栈并打开蓝牙功能;
(5)新创建进程监听GATT连接信息,并在蓝牙遥控器请求连接时自动连接;
(6)Android上层应用调用蓝牙接口时,bluetooth服务与native蓝牙服务程序使用binder通讯,传递函数调用关系与参数;协议栈的回调函数也由native蓝牙服务经binder传递到bluetooth服务。
2.根据权利要求1所述的Android智能设备快速连接蓝牙的方法,其特征在于,步骤(3)使用shell脚本执行insmod命令加载蓝牙驱动,并检测是否加载完成采用Android系统标准的加载驱动方式。
3.根据权利要求2所述的Android智能设备快速连接蓝牙的方法,其特征在于,通过在代码中使用access函数查看蓝牙驱动节点文件是否存在,来判定驱动是否已经加载,并通过打开蓝牙驱动节点文件来判定驱动是否加载完成。
4.根据权利要求3所述的Android智能设备快速连接蓝牙的方法,其特征在于,如果蓝牙驱动设备节点文件不存在,等待一段时间再做检测,仍然不存在,则重新加载驱动;如果打开蓝牙驱动节点失败,则等待一段时间再次执行读取,尝试一定次数后仍然失败则结束当前进程,由init进程重启native蓝牙服务程序。
5.根据权利要求1所述的Android智能设备快速连接蓝牙的方法,其特征在于,蓝牙遥控器请求连接时自动连接的方法为:第一次有蓝牙遥控器按键输出时,由协议栈完成自动回连,创建对应的input节点;当再次有蓝牙遥控器按键输出时,协议栈将数据发送到uhid,由kernel实现按键写入到对应的input节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610945276.6A CN106412656B (zh) | 2016-10-26 | 2016-10-26 | Android智能设备快速连接蓝牙的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610945276.6A CN106412656B (zh) | 2016-10-26 | 2016-10-26 | Android智能设备快速连接蓝牙的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106412656A CN106412656A (zh) | 2017-02-15 |
CN106412656B true CN106412656B (zh) | 2019-08-06 |
Family
ID=58013622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610945276.6A Active CN106412656B (zh) | 2016-10-26 | 2016-10-26 | Android智能设备快速连接蓝牙的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106412656B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106714084B (zh) * | 2016-12-19 | 2019-11-12 | 四川长虹电器股份有限公司 | 安卓智能设备快速连接蓝牙的方法 |
CN106921908B (zh) * | 2017-03-24 | 2020-05-26 | 成都极米科技股份有限公司 | 一种蓝牙音箱实现方法和系统 |
CN107257540B (zh) | 2017-07-04 | 2020-05-19 | 飞天诚信科技股份有限公司 | 一种实现蓝牙设备与移动设备配对的方法及装置 |
CN108319480A (zh) * | 2018-02-01 | 2018-07-24 | 微鲸科技有限公司 | 蓝牙服务启动方法、装置及电子设备 |
CN111602344B (zh) | 2018-08-01 | 2021-08-31 | 华为技术有限公司 | 一种蓝牙通信的方法及双模蓝牙终端 |
CN110136419A (zh) * | 2019-05-31 | 2019-08-16 | 盘友圈(广州)科技有限公司 | 一种通过蓝牙遥控安卓设备的方法 |
CN112202969A (zh) * | 2020-09-27 | 2021-01-08 | 珠海格力电器股份有限公司 | 一种蓝牙控制方法及装置 |
CN112309154A (zh) * | 2020-09-28 | 2021-02-02 | 惠州市德赛西威智能交通技术研究院有限公司 | 一种Ble快速启动自动泊车出库方法,设备及汽车 |
CN113543104B (zh) * | 2021-07-13 | 2023-10-24 | 深圳创维-Rgb电子有限公司 | 蓝牙通信方法、多媒体设备及存储介质 |
CN114554259A (zh) * | 2022-01-14 | 2022-05-27 | 海信视像科技股份有限公司 | 控制设备、显示设备和设备信息获取方法 |
CN114173315B (zh) * | 2022-02-14 | 2022-06-14 | 荣耀终端有限公司 | 蓝牙回连方法及终端设备 |
CN114980057B (zh) * | 2022-06-21 | 2023-07-07 | 润芯微科技(江苏)有限公司 | 一种系统设备快速连接低功耗蓝牙设备的方法 |
CN115484343B (zh) * | 2022-09-08 | 2024-06-21 | 上海术理智能科技有限公司 | 基于微信小程序防止安卓手机与蓝牙设备数据传输丢失的方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102082969B (zh) * | 2010-10-29 | 2013-03-27 | 广东星海数字家庭产业技术研究院有限公司 | 一种机顶盒外接蓝牙设备驱动系统 |
US9819986B2 (en) * | 2012-08-17 | 2017-11-14 | Flextronics Ap, Llc | Automated DLNA scanning with notification |
CN104572078A (zh) * | 2014-12-16 | 2015-04-29 | 深圳市同洲电子股份有限公司 | 在Android修复模式下蓝牙功能的实现方法及系统 |
CN104469664A (zh) * | 2014-12-26 | 2015-03-25 | 乐视致新电子科技(天津)有限公司 | 一种蓝牙设备信息处理方法和装置 |
CN105487887B (zh) * | 2015-11-24 | 2021-01-08 | 惠州Tcl移动通信有限公司 | 一种蓝牙启动方法及蓝牙设备 |
-
2016
- 2016-10-26 CN CN201610945276.6A patent/CN106412656B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106412656A (zh) | 2017-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106412656B (zh) | Android智能设备快速连接蓝牙的方法 | |
WO2016206528A1 (zh) | 一种实现Android系统下蓝牙自动回连的方法 | |
CN109587005B (zh) | 连接检测方法、装置、计算机设备以及可读存储介质 | |
US11960869B2 (en) | Android penetration method and device for implementing silent installation based on accessibility services | |
CN101594613A (zh) | 终端设备及其升级的方法、系统 | |
CN105607921B (zh) | 一种基于Android系统的系统服务启动方法及系统 | |
CN110750284B (zh) | 一种应用快速启动方法、终端及计算机可读存储介质 | |
WO2011009346A1 (zh) | 手机应用程序的启动方法、装置和系统 | |
CN111427594B (zh) | 应用程序运行方法及装置 | |
CN102984500A (zh) | 一种实现多种视频监控设备兼容的方法、装置和系统 | |
CN111277373B (zh) | 一种服务器切换的控制方法、终端及存储介质 | |
WO2021136200A1 (zh) | 引导程序的加载方法、存储介质及嵌入式终端 | |
US20130019020A1 (en) | Smart wireless connection | |
CN112203132A (zh) | 一种安卓智能电视开机快速回连蓝牙遥控器的方法 | |
CN109067735B (zh) | 通信协议的动态配置方法、无线通信装置和智能设备 | |
CN103686380B (zh) | 智能电视的应用管理方法和智能电视 | |
CN113101670B (zh) | 一种版本切换方法及装置 | |
US11144370B2 (en) | Communication method for virtual machines, electronic device, and non-transitory computer readable storage medium | |
CN113703914A (zh) | 测试方法和测试系统 | |
CN111427259A (zh) | 一种机框插槽式的主备切换方法、智能设备及存储介质 | |
WO2015184902A1 (zh) | 一种智能分屏的并发处理方法及相应的智能终端 | |
CN107491330B (zh) | 一种提高嵌入式浏览器运行速度的方法 | |
CN114020618B (zh) | 一种基于fpga和dpdk的高可用测试方法及系统 | |
JP4063573B2 (ja) | デバイスドライバの組み込み・実行方式、組み込み・実行方法、及びプログラム | |
KR102414206B1 (ko) | 오토사 표준 응용 소프트웨어 컴포넌트 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |