Android智能设备快速连接蓝牙的方法技术

技术编号:14647096 阅读:303 留言:0更新日期:2017-02-16 03:59
本发明专利技术涉及Android系统领域,公开了一种Android智能设备快速连接蓝牙的方法,解决Android系统未完成启动时蓝牙遥控器不可用的问题,同时解决重启系统下蓝牙功能不可用问题。本发明专利技术在Android系统根目录下的init.rc中注册native蓝牙服务,native蓝牙服务进程在开机时启动,完成对本机蓝牙模块和蓝牙协议栈的初始化,创建新进程监听GATT连接信息,并在蓝牙遥控器请求连接时自动连接,并在Android系统启动完成后,Android系统中Bluetooth进程查找到蓝牙服务程序并进行binder通讯,兼容android系统蓝牙流程。本发明专利技术适用于Android系统的智能电视。

【技术实现步骤摘要】

本专利技术涉及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模式下对蓝牙遥控器的支持。本文档来自技高网...

【技术保护点】
Android智能设备快速连接蓝牙的方法,其特征在于,在Android系统根目录下的init.rc中注册native蓝牙服务,native蓝牙服务进程在开机时启动,完成对本机蓝牙模块和蓝牙协议栈的初始化,创建新进程监听GATT连接信息,并在蓝牙遥控器请求连接时自动连接,并在Android系统启动完成后,Android系统中Bluetooth进程查找到native蓝牙服务程序并进行binder通讯,兼容android系统蓝牙流程。

【技术特征摘要】
1.Android智能设备快速连接蓝牙的方法,其特征在于,在Android系统根目录下的init.rc中注册native蓝牙服务,native蓝牙服务进程在开机时启动,完成对本机蓝牙模块和蓝牙协议栈的初始化,创建新进程监听GATT连接信息,并在蓝牙遥控器请求连接时自动连接,并在Android系统启动完成后,Android系统中Bluetooth进程查找到native蓝牙服务程序并进行binder通讯,兼容android系统蓝牙流程。2.根据权利要求1所述的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服务与nat...

【专利技术属性】
技术研发人员:李平周建波杨晓胜
申请(专利权)人:四川长虹电器股份有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1