CN109451472B - Android智能设备上多蓝牙芯片的动态管理方法 - Google Patents
Android智能设备上多蓝牙芯片的动态管理方法 Download PDFInfo
- Publication number
- CN109451472B CN109451472B CN201811168738.3A CN201811168738A CN109451472B CN 109451472 B CN109451472 B CN 109451472B CN 201811168738 A CN201811168738 A CN 201811168738A CN 109451472 B CN109451472 B CN 109451472B
- Authority
- CN
- China
- Prior art keywords
- bluetooth
- android
- chip
- different
- chips
- 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 claims abstract description 32
- 230000008569 process Effects 0.000 claims abstract description 18
- 238000007726 management method Methods 0.000 claims abstract description 9
- 230000009471 action Effects 0.000 claims description 6
- 238000010561 standard procedure Methods 0.000 claims description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/80—Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了Android智能设备上多蓝牙芯片的动态管理方法,包括如下步骤:步骤一、蓝牙芯片型号的获取;步骤二、不同蓝牙模块的加载:首先预置蓝牙芯片对应的蓝牙应用和协议栈。其次,在系统核心进程启动完毕后,通过判断前面在init中设置的标志,指定跨进程启动对应蓝牙芯片的蓝牙应用服务。最后,通过JNI去获取硬件抽象层的ID,在获取硬件抽象层接口中,根据init中设置的标志,查找对应蓝牙协议栈的库文件,并把库文件的路径和名字传入Load方法,这样就完成了蓝牙芯片对应蓝牙协议栈的加载。本发明可以实现一套Android整机镜像版本兼容多个蓝牙芯片,提升了用户体验。
Description
技术领域
本发明涉及一种蓝牙芯片的管理方法,具体涉及一种Android智能电视上多蓝牙芯片的动态管理方法,属于Android智能设备技术领域。
背景技术
当前Android智能电视基本标配了蓝牙功能,因为蓝牙在低功耗,数据传输方面有一定优势。但是当前支持Android智能电视的蓝牙芯片有不同的厂商,其采用的蓝牙应用服务,蓝牙协议栈以及蓝牙设备驱动都有芯片厂商自己的特殊定制,无法实现一套蓝牙代码兼容不同蓝牙厂商的芯片,导致Android系统编译生成的镜像文件只能与某一个特定的蓝牙芯片绑定。
现有的连接方式存在如下问题:一是无法实现蓝牙芯片的更改,如用户希望使用其他的蓝牙接收器就无法实现。二是大大增加了Android整机系统镜像文件的维护工作量,如采用一个新的蓝牙芯片,就需要针对这个芯片重新维护一套Android整机系统镜像文件。
本发明就是针对在Android智能电视上蓝牙芯片无法动态管理加载的问题,提出了一个有效的解决方法。
发明内容
本发明的目的就是解决现有技术中Android智能电视无法动态兼容多个蓝牙芯片的问题,提供一种Android智能设备上多蓝牙芯片的动态管理方法。
本发明主要是通过在Android智能电视上,动态识别接入的蓝牙芯片,然后根据蓝牙芯片的型号,在Android运行的不同阶段,选择合适的时机运行加载蓝牙芯片对应的蓝牙设备驱动、蓝牙协议栈以及蓝牙应用服务,从而实现对多蓝牙芯片的动态管理。
在具体介绍本发明的技术方案之前,对本发明涉及到的相关技术内容进行说明如下:
Android智能电视的蓝牙启动机制:
Android系统的内核启动完成后,首先会创建init进程,在此进程中Android系统会通过 insmod的方式将指定蓝牙设备驱动程序载入内核,完成蓝牙芯片相关初始化工作。然后在 Android系统核心进程启动完毕后,在进程System_server中通过跨进程的通讯方式启动指定蓝牙应用服务。最后在蓝牙应用服务初始化的过程中,通过Android Hardware动态获取蓝牙的Module ID,把蓝牙协议栈加载起来并完成相关初始化工作,这样蓝牙功能就成功打开,可以提供相关的蓝牙服务。
通过上面的描述,可以知道如果想要做到能够根据不同蓝牙芯片动态加载对应的蓝牙模块,关键就在于能够在加载运行蓝牙设备驱动、蓝牙协议栈以及蓝牙应用服务之前,能够通过合适的方法识别不同的蓝牙芯片型号,并且根据型号的不同,采取合适的方法加载不同的代码模块。
本发明具体是这样实现的:
Android智能设备上多蓝牙芯片的动态管理方法,包括如下步骤:
步骤一、蓝牙芯片型号的获取
Android系统的内核启动完成以后,在insmod蓝牙设备驱动之前。首先通过Linux内核提供的标准方法,获取当前内核识别到的USB设备的Product ID和Vendor ID,然后在init 进程中通过对PID和VID的判断,来加载当前内核识别到的蓝牙芯片的设备驱动文件。
程序加载完成之后,通过Android提供的系统属性服务,设置一个系统属性作为蓝牙芯片型号的标志,以便后续的程序可以简单的通过这个标志来获取当前接入的蓝牙芯片型号。
步骤二、不同蓝牙模块的加载
首先为了运行加载不同的蓝牙应用服务和蓝牙协议栈,需要预置蓝牙芯片对应的蓝牙应用和协议栈。由于系统只支持运行一个蓝牙进程,所以必须对不同的蓝牙应用和协议栈进行区分,蓝牙应用采用定义不同的匹配动作Action,让上层应用获取蓝牙服务主服务的时候通过定义的字符串启动对应蓝牙应用,其中涉及的其他服务的名字不变。蓝牙协议栈通过在 Android编译文件中指定不同的名字,然后把指定的名字通过前面的系统属性服务存储在系统中,这样就可以在硬件抽象层加载协议栈的时候根据系统属性进行区别。
其次,在系统核心进程启动完毕后,通过判断前面在init中设置的标志,指定跨进程启动对应蓝牙芯片的蓝牙应用服务,这样上层的应用接口就和当前接入芯片的蓝牙应用服务实现了对应。
最后,在蓝牙应用服务初始化的过程中,会通过JNI去获取硬件抽象层的ID,需要在获取硬件抽象层接口中,根据init中设置的标志,查找系统Hardware目录下的对应蓝牙协议栈的库文件,找到对应的蓝牙库文件后,把库文件的路径和名字传入Load方法,这样就完成了蓝牙芯片对应蓝牙协议栈的加载。
通过以上的步骤,就可以动态根据接入的蓝牙芯片不同,从而使能对应蓝牙功能。
在步骤一之前,需要预先将不同蓝牙芯片的驱动程序、蓝牙协议栈,以及蓝牙应用服务程序预置在系统中,具体包括:
为不同蓝牙芯片的蓝牙设备驱动程序和蓝牙协议栈定制不同的名字,然后在对驱动程序和蓝牙协议栈进行命名,比如在Makefile中按照btusb_xxx.ko(xxx代表厂商型号)的格式命名驱动程序,在Android.mk中按照bluetooth,xxx.so的格式命名蓝牙协议栈。
对蓝牙应用服务程序进行编译,编译出包名与Action完全不一样的应用,从而使得系统 bind指定的蓝牙应用服务程序。
本发明具有如下有益效果:
解决了当前Android智能电视无法根据接入蓝牙芯片动态加载使能的问题。采用此方案可以实现一套Android整机镜像版本兼容多个蓝牙芯片,大大减少软件移植的工作量。也可以让用户在蓝牙接收器上有了选择,提升了用户体验。同样,本申请还适用于除了Android 智能电视之外的其他Android智能设备上。
附图说明
图1为系统获取蓝牙芯片型号的流程
图2为系统动态加载蓝牙各个模块实施流程
具体实施方式
下面结合附图和具体实施例对本发明作进一步的说明。
本实施实例采用以上的发明方案,应用于Android 6.0智能电视机芯平台具体实施方式是:
1、定制不同芯片厂家的蓝牙设备驱动程序、蓝牙协议栈的名字,在Makefile中按照 btusb_xxx.ko(xxx代表厂商型号)的格式命名驱动程序,在Android.mk中按照bluetooth,xxx.so 的格式命名蓝牙协议栈。
2、由于Android Framework层是通过bindservice启动蓝牙应用服务,而蓝牙应用服务是一个apk文件,蓝牙应用的编译需要依赖Android SDK,然后通过Android标准Makefile文件进行编译。由于系统服务的启动可以通过包名来区别,所以为了让Android的系统启动服务程序可以获取到不同的蓝牙应用服务,所以我们需要编译出两个或多个包名和Action完全不一样的应用,这样才能让系统bind指定的蓝牙应用服务程序。
3、Android系统启动init进程之后,在init脚本文件中通过lsusb的方式向系统查询当前所有接入的USB设备,然后在内核返回的查询结果中通过PID和VID进行筛选,找到当前实际接入的蓝牙芯片,然后根据设备驱动程序的名字insmod对应的驱动。最后通过Android系统属性的方式设置一个蓝牙系统属性来表示当前接入设备的型号,具体如附图1所示。
4、在系统核心进程System_server中启动BluetoothManagerService服务并完成初始化工作,当收到系统开机完毕的广播后,首先通过判断dev设备节点来确定蓝牙设备驱动程序是否加载正确,然后通过系统属性获取当前蓝牙芯片型号,最后向bindservice方法传入指定的包名和Action,这样就通过跨进程的方式启动了蓝牙芯片对应的蓝牙应用服务。
5、上层以bindservice的方式启动蓝牙应用服务,蓝牙应用服务初始化的过程中会通过 JNI的方式调用hw_get_module接口来获取硬件抽象层的ID,在硬件抽象层中我们根据init 设置的系统属性来选择对应的device_id,最后把device_id传入load蓝牙协议栈的方法,系统会根据device_id加载对应的蓝牙库文件。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。
Claims (2)
1.Android智能设备上多蓝牙芯片的动态管理方法,其特征在于包括如下步骤:
步骤一、蓝牙芯片型号的获取
Android系统的内核启动完成以后,在insmod蓝牙设备驱动之前;首先通过Linux内核提供的标准方法,获取当前内核识别到的USB设备的Product ID和Vendor ID,然后在init进程中通过对PID和VID的判断,来加载当前内核识别到的蓝牙芯片的设备驱动文件;
程序加载完成之后,通过Android提供的系统属性服务,设置一个系统属性作为蓝牙芯片型号的标志,以便后续的程序可以简单的通过这个标志来获取当前接入的蓝牙芯片型号;
步骤二、不同蓝牙模块的加载
首先为了运行加载不同的蓝牙应用服务和蓝牙协议栈,需要预置蓝牙芯片对应的蓝牙应用和协议栈;由于系统只支持运行一个蓝牙进程,所以必须对不同的蓝牙应用和协议栈进行区分,蓝牙应用采用定义不同的匹配动作Action,让上层应用获取蓝牙服务主服务的时候通过定义的字符串启动对应蓝牙应用,其中涉及的其他服务的名字不变;蓝牙协议栈通过在Android编译文件中指定不同的名字,然后把指定的名字通过前面的系统属性服务存储在系统中,这样就可以在硬件抽象层加载协议栈的时候根据系统属性进行区别;
其次,在系统核心进程启动完毕后,通过判断前面在init中设置的标志,指定跨进程启动对应蓝牙芯片的蓝牙应用服务,这样上层的应用接口就和当前接入芯片的蓝牙应用服务实现了对应;
最后,在蓝牙应用服务初始化的过程中,会通过JNI去获取硬件抽象层的ID,需要在获取硬件抽象层接口中,根据init中设置的标志,查找系统Hardware目录下的对应蓝牙协议栈的库文件,找到对应的蓝牙库文件后,把库文件的路径和名字传入Load方法,这样就完成了蓝牙芯片对应蓝牙协议栈的加载。
2.根据权利要求1所述Android智能设备上多蓝牙芯片的动态管理方法,其特征在于:
在步骤一之前,需要预先将不同蓝牙芯片的驱动程序、蓝牙协议栈,以及蓝牙应用服务程序预置在系统中,具体包括:
为不同蓝牙芯片的蓝牙设备驱动程序和蓝牙协议栈定制不同的名字,然后再对驱动程序和蓝牙协议栈进行命名,具体是在Makefile中按照btusb_xxx.ko的格式命名驱动程序,在Android.mk中按照bluetooth,xxx.so的格式命名蓝牙协议栈,其中xxx代表厂商型号;
对蓝牙应用服务程序进行编译,编译出包名与Action完全不一样的应用,从而使得系统bind指定的蓝牙应用服务程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811168738.3A CN109451472B (zh) | 2018-10-08 | 2018-10-08 | Android智能设备上多蓝牙芯片的动态管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811168738.3A CN109451472B (zh) | 2018-10-08 | 2018-10-08 | Android智能设备上多蓝牙芯片的动态管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109451472A CN109451472A (zh) | 2019-03-08 |
CN109451472B true CN109451472B (zh) | 2021-04-06 |
Family
ID=65545904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811168738.3A Active CN109451472B (zh) | 2018-10-08 | 2018-10-08 | Android智能设备上多蓝牙芯片的动态管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109451472B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110366039A (zh) * | 2019-07-12 | 2019-10-22 | 四川长虹电器股份有限公司 | 一种Android系统下不同蓝牙模组的兼容方法 |
CN110460984B (zh) * | 2019-08-16 | 2022-07-01 | 中科微电技术(深圳)有限公司 | 基于分布式存储的多蓝牙控制方法、系统、终端及存储 |
CN111443952B (zh) * | 2020-03-16 | 2023-04-07 | 珠海全志科技股份有限公司 | 提升基于uart接口的蓝牙打开速度的方法及系统 |
CN111954039B (zh) * | 2020-07-02 | 2022-07-01 | 深圳市华曦达科技股份有限公司 | 机顶盒蓝牙配置方法、装置、电子设备及存储介质 |
CN112311853B (zh) * | 2020-09-28 | 2024-05-24 | 北京京东拓先科技有限公司 | 一种数据同步方法、装置、设备及计算机可读存储介质 |
CN112684319B (zh) * | 2020-12-16 | 2022-11-22 | 海光信息技术股份有限公司 | 一种芯片检验追踪方法及装置 |
CN113099433A (zh) * | 2021-04-14 | 2021-07-09 | 深圳泰科晶显科技有限公司 | 一种基于安卓系统的动态的兼容不同厂商的wifi及蓝牙模块的方法 |
CN115442781A (zh) * | 2022-05-31 | 2022-12-06 | 北京罗克维尔斯科技有限公司 | 多蓝牙驱动方法、装置、设备、介质及车辆 |
WO2023240560A1 (zh) * | 2022-06-16 | 2023-12-21 | 北京小米移动软件有限公司 | 支持多协议栈的蓝牙通信方法、装置、电子设备及介质 |
CN115567665B (zh) * | 2022-09-22 | 2024-10-01 | 四川长虹电器股份有限公司 | 一种智能电视高频头自适应方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104598960A (zh) * | 2014-10-31 | 2015-05-06 | 厦门盛华电子科技有限公司 | 能够认证、加解密的手机蓝牙key及其认证、加解密方法 |
CN105893038A (zh) * | 2016-03-30 | 2016-08-24 | 大连理工大学 | 一种安卓蓝牙协议栈向Mint17系统移植的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160234696A1 (en) * | 2015-02-09 | 2016-08-11 | Qualcomm Technologies International, Ltd. | Detection of coexistence in devices using multiple wireless communication technologies |
-
2018
- 2018-10-08 CN CN201811168738.3A patent/CN109451472B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104598960A (zh) * | 2014-10-31 | 2015-05-06 | 厦门盛华电子科技有限公司 | 能够认证、加解密的手机蓝牙key及其认证、加解密方法 |
CN105893038A (zh) * | 2016-03-30 | 2016-08-24 | 大连理工大学 | 一种安卓蓝牙协议栈向Mint17系统移植的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109451472A (zh) | 2019-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109451472B (zh) | Android智能设备上多蓝牙芯片的动态管理方法 | |
CN101170675B (zh) | 网络电视系统中管理j2me应用程序的方法和系统 | |
CN102752369B (zh) | 电视应用服务的提供方法及虚拟化内容服务平台 | |
EP2701059A1 (en) | Method and apparatus for loading application program | |
US20230205503A1 (en) | Method for dynamically integrating application programs, and software system and machine using the same | |
KR100809395B1 (ko) | 원격 제어 기능을 구비한 휴대 단말 장치 및 이를 이용한원격 제어 방법 | |
CN106663016A (zh) | 一种终端设备刷机方法、装置和设备 | |
CN111427594B (zh) | 应用程序运行方法及装置 | |
CN105094877A (zh) | 一种固件升级的方法和主机端装置及系统 | |
CN112235639B (zh) | 一种易升级可扩展的Linux智能电视操作系统 | |
CN113132805B (zh) | 一种播放控制方法、系统、智能终端及存储介质 | |
CN106919391B (zh) | 面向智能手机的可定制操作系统组件的嵌入式系统 | |
CN109343970B (zh) | 基于应用程序的操作方法、装置、电子设备及计算机介质 | |
CN111580986A (zh) | 一种基于采集服务中间件的数据获取方法、系统及介质 | |
CN108268261B (zh) | 一种智能终端的ui定制方法、存储介质及智能终端 | |
CN111381978B (zh) | 一种接入应用程序的方法、存储介质以及智能电视 | |
CN104581695A (zh) | 移动终端配置方法和系统 | |
CN115981614B (zh) | 项目工程的模块化处理方法、电子设备及计算机存储介质 | |
CN113050962A (zh) | 移动服务升级方法、装置和终端 | |
CN112860300B (zh) | 分布式sdk热更新处理方法、应用服务器集群及应用客户端 | |
CN1188790C (zh) | 调制解调器的控制方法及设备 | |
US11372627B2 (en) | System and method for providing integrated development environment (IDE) for programmable software system | |
CN105204866A (zh) | 设备命令调用方法和系统 | |
WO2016206437A1 (zh) | Rom包生成方法及装置 | |
TWI581185B (zh) | 應用程式安裝方法及系統 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |