掌桥专利:专业的专利平台
掌桥专利
首页

一种基于安卓系统shell权限使用手柄操作的方法

文献发布时间:2023-06-19 13:45:04


一种基于安卓系统shell权限使用手柄操作的方法

技术领域

本发明属于安卓系统应用技术领域,具体涉及一种基于安卓系统shell权限使用手柄操作的方法。

背景技术

当今智能手机的普及度已经非常高,已经成了生活中的必备电子产品,同时也出现了大量基于智能手机操作系统开发的电子游戏。在以前,人们多数是通过个人电脑以及家用游戏主机平台来玩电子游戏,而现在,因为智能手机的便携性,操作简易等特点,人们更多的倾向于在智能手机上玩游戏,因此形成了一个庞大的手游用户群体。

众所周知智能手机的输入操作是通过电容式触摸屏,对于一般的游戏玩家来说,使用触摸屏来玩游戏是可以满足需求的。但是也存在着一部分希望使用外接游戏手柄来进行游玩的用户,他们想通过这类设备来获得更好的游戏操作体验,然而目前大多数的手机游戏是不支持这些外接手柄的。

综上所述,亟需提供一种可实现将外接手柄的操作信号转换为手机触摸屏的触摸输入信号,以此来达到控制安卓系统的终端设备相关操作的基于安卓系统shell权限使用手柄操作的方法。

发明内容

本发明的目的是提供一种可实现将外接手柄的操作信号转换为手机触摸屏的触摸输入信号,以此来达到控制安卓系统的终端设备相关操作的基于安卓系统shell权限使用手柄操作的方法。

上述目的是通过如下技术方案实现:一种基于安卓系统shell权限使用手柄操作的方法,包括如下步骤:

S1,将安装有客户端程序的安卓终端设备连接PC端并打开调试模式;

S2,在PC端上运行一个预设的脚本程序;

S3,脚本程序执行启动预定的进程,所述进程具有高权限的可调用系统函数的服务,所述可调用系统函数的服务简称为sys_api_service,sys_api_servic能调用系统内部函数并向安卓终端设备的屏幕发送触摸信号;

S4,客户端程序与sys_api_service建立连接;

S5,将手柄与安卓终端设备进行配对连接;

S6,客户端程序提供映射控件,在客户端程序上配置映射控件和手柄按键之间的绑定关系;

S7,操作游戏手柄;

S8,客户端程序接收到手柄的操作信号并转换为对应的触摸信号,通过sys_api_service调用系统内部函数使触摸信号在安卓终端设备上生效。

本技术方案就是要在Android操作系统上通过一个中间层软件(客户端程序)通过获取安卓系统shell权限后来实现将外接手柄的输入的操作信号转换为手机触摸屏的触摸输入信号,以此来达到控制手机游戏的目的,获取安卓系统shell权限的方法不限,可以是传统的USB连接电脑的方式,也可以是其他方式。需要说明的是,本领域技术人员应当清楚可根据客户端程序所要实现的功能与步骤编制这样一个程序来实现配置映射控件和手柄按键之间的绑定关系以及将接收到手柄的操作信号并转换为对应的触摸信号的作用。

进一步的技术方案是,所述步骤S1中的调试模式为USB调试模式,所述步骤S1的具体步骤如下:

S1.1,使用USB线将安卓终端设备和电脑连接;

S1.2,进入安卓终端设备的设置界面;

S1.3,打开开发者模式;

S1.4,进入开发者选项,并且勾选USB调试。

进一步的技术方案是,所述步骤S2和S3中所述脚本程序运行后通过adb shell执行预定的指令,执行后将会启动sys_api_service。

进一步的技术方案是,所述步骤S5的具体步骤如下:

S5.1,打开安卓终端设备的蓝牙设置界面,开启蓝牙搜索。

S5.2,将手柄开启蓝牙配对模式。

S5.3,在安卓终端设备蓝牙搜索列表中找到手柄,点击进行连接配对。

进一步的技术方案是,所述步骤S6的具体步骤如下:

S6.1,进入客户端程序的主界面,将目标手柄进行操作的目标游戏添加到客户端程序的游戏列表中;

S6.2,显示配置菜单,配置菜单中有与目标手柄的按键和摇杆对应的选项,逐一点击所需的选项,安卓终端设备的界面上逐一添加与手柄的按键或摇杆形成绑定关系的映射控件。

进一步的技术方案是,所述步骤S6.2中的具体步骤如下:进入目标游戏,由客户端程序创建的悬浮按钮显示在目标游戏界面的上层,悬浮按钮通过调用WindowManager的addView函数创建的系统级窗口,点击悬浮按钮,显示配置菜单,配置菜单中有按键、左摇杆和右摇杆的选项,点击按键、左摇杆、右摇杆三个选项中的一个,当选项被点击后,将会有对应映射控件被添加到安卓终端设备的界面上。

进一步的技术方案是,所述步骤S6.2中,当点击左摇杆选项时,安卓终端设备界面上会添加一个和手柄的左摇杆形成绑定关系的映射控件;当点击右摇杆选项时,安卓终端设备界面上会添加一个和手柄的右摇杆形成绑定关系的映射控件;当点击按键选项时,安卓终端设备界面上将会出现一个暂未有绑定关系的映射控件,此时按下手柄上的其中一个按键,暂未有绑定关系的映射控件与手柄上的按下的对应按键形成绑定关系,如此依次完成与手柄的其他按键的分别形成绑定关系的映射控件的配置。

进一步的技术方案是,所述步骤S8的具体步骤如下:

S8.1,客户端程序接收到手柄的操作信号;

S8.2,客户端程序将手柄输入的操作信号转换为手机触摸屏触摸信号,发送至sys_api_service;

S8.3,sys_api_service将接收到的触摸信号,调用系统内部函来使触摸信号在手机上生效。

进一步的技术方案是,所述步骤S7中操作手柄的按键时,会产生“按下”和“抬起”两种响应值,所述步骤S8.2中,“按下”或“抬起”两种响应值变成安卓终端设备屏幕的相应的触摸信号的输入,触摸信号在屏幕中的输入位置为对应的按键的绑定的映射控件在安卓终端设备屏幕中所在的位置。

进一步的技术方案是,所述步骤S7中操作手柄的摇杆时,所述步骤S8.2中,将响应的坐标点值等比投射到安卓终端设备屏幕中摇杆映射控件的区域,然后在投射的位置生成屏幕触摸信号,当摇杆从推动状态复位到原点时,将会生成“抬起”的屏幕触摸事件。

进一步的技术方案是,所述步骤S7中操作手柄的摇杆时,所述步骤S8.2中,客户端程序先判断出摇杆响应值坐标点相对于坐标轴原点的方向,称之为方向A,再判断出摇杆响应值坐标点相对于坐标轴原点的距离,称之为距离A,然后生成一个一直持续的滑动触摸信号,滑动触摸信号的方向就是方向A,滑动的速度和距离A成正相关,当距离A为0时,判断摇杆复位,滑动信号取消。

本发明技术方案的实施可使原本无法支持使用游戏手柄控制的安卓终端设备游戏可以使用游戏手柄来操控,从而方便用户的游戏操作,提升了游戏的操控体验。

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。

图1为本发明一种实施方式所涉及的基于安卓系统shell权限使用手柄操作的方法的流程示意图;

图2~4为本发明一种实施方式所涉及的配置映射控件操作界面示意图;

图5为一种手柄的示意图;

图6为本发明一种实施方式所涉及的手柄摇杆的操作状态示意图,其中:图例①为没有操作摇杆时的状态(复位状态,坐标点处在坐标轴的原点),图例②为将摇杆推到最上位置时的状态;图例③为将摇杆推到最下位置时的状态;图例④为将摇杆推到最左位置时的状态;图例⑤为将摇杆推到最右位置时的状态。

具体实施方式

下面结合附图对本发明进行详细描述,本部分的描述仅是示范性和解释性,不应对本发明的保护范围有任何的限制作用。此外,本领域技术人员根据本文件的描述,可以对本文件中实施例中以及不同实施例中的特征进行相应组合。

本发明实施例如下,参照图1,一种基于安卓系统shell权限使用手柄操作的方法,包括如下步骤:

S1,将安装有客户端程序的安卓终端设备连接PC端并打开调试模式;

S2,在PC端上运行一个预设的脚本程序;

S3,脚本程序执行启动预定的进程,所述进程具有高权限的可调用系统函数的服务,所述可调用系统函数的服务简称为sys_api_service,sys_api_servic能调用系统内部函数并向安卓终端设备的屏幕发送触摸信号;

S4,客户端程序与sys_api_service建立连接;

S5,将手柄与安卓终端设备进行配对连接;

S6,客户端程序提供映射控件,在客户端程序上配置映射控件和手柄按键之间的绑定关系;

S7,操作游戏手柄;

S8,客户端程序接收到手柄的操作信号并转换为对应的触摸信号,通过sys_api_service调用系统内部函数使触摸信号在安卓终端设备上生效。

本技术方案就是要在Android操作系统上通过一个中间层软件(客户端程序)通过获取安卓系统shell权限后来实现将外接手柄的输入的操作信号转换为手机触摸屏的触摸输入信号,以此来达到控制手机游戏的目的,获取安卓系统shell权限的方法不限,可以是传统的USB连接电脑的方式,也可以是其他方式。需要说明的是,本领域技术人员应当清楚可根据客户端程序所要实现的功能与步骤编制这样一个程序来实现配置映射控件和手柄按键之间的绑定关系以及将接收到手柄的操作信号并转换为对应的触摸信号的作用。

在上述实施例的基础上,本发明另一实施例中,所述步骤S1中的调试模式为USB调试模式,所述步骤S1的具体步骤如下:

S1.1,使用USB线将安卓终端设备和电脑连接;

S1.2,进入安卓终端设备的设置界面;

S1.3,打开开发者模式;

S1.4,进入开发者选项,并且勾选USB调试。

在上述实施例的基础上,本发明另一实施例中,所述步骤S2和S3中所述脚本程序运行后通过adb shell执行预定的指令,执行后将会启动sys_api_service。鼠标双击后脚本程序会开始执行,此脚本程序中编写的代码逻辑是,通过adb shell来执行“nohup app_process-Djava.class.path=/data/local/tmp/system-api.apk/data/local/tmpcom.sbx.systemapi.Main>/dev/null 2>&1&”命令,这个命令中“/data/local/tmp/system-api.apk”部分是指示sys_api_service程序包的存放路径,“/data/local/tmpcom.sbx.systemapi.Main”部分是指示sys_api_service程序入口Main方法所在的类的路径,这里给出的路径只是一个实例,实际情况可根据需要放置在合适的位置。这个命令执行后将会启动sys_api_service。

sys_api_service是由adb shell启动,具有比普通应用程序进程更高的权限,所以它可以调用系统内部函数来向手机屏幕发送一个触摸信号。客户端程序是不具备的向系统发送触摸信号的权限的,而它通过与sys_api_service建立连接后进行通信,则可以通过它将触摸信号转发给操作系统来产生一个触摸信号。sys_api_service在这里起到了一个桥梁的作用。

在上述实施例的基础上,本发明另一实施例中,所述步骤S5的具体步骤如下:

S5.1,打开安卓终端设备的蓝牙设置界面,开启蓝牙搜索。

S5.2,将手柄开启蓝牙配对模式。

S5.3,在安卓终端设备蓝牙搜索列表中找到手柄,点击进行连接配对。

在上述实施例的基础上,本发明另一实施例中,所述步骤S6的具体步骤如下:

S6.1,进入客户端程序的主界面,将目标手柄进行操作的目标游戏添加到客户端程序的游戏列表中;

S6.2,显示配置菜单,配置菜单中有与目标手柄的按键和摇杆对应的选项,逐一点击所需的选项,安卓终端设备的界面上逐一添加与手柄的按键或摇杆形成绑定关系的映射控件。

在上述实施例的基础上,本发明另一实施例中,所述步骤S6.2中的具体步骤如下:进入目标游戏,如图2,由客户端程序创建的悬浮按钮显示在目标游戏界面的上层,悬浮按钮通过调用WindowManager的addView函数创建的系统级窗口,所以它可以覆盖在游戏界面的上层;点击悬浮按钮,显示配置菜单,如图3,配置菜单中有按键、左摇杆和右摇杆的选项,点击按键、左摇杆、右摇杆三个选项中的一个,当选项被点击后,将会有对应映射控件被添加到安卓终端设备的界面上。

在上述实施例的基础上,本发明另一实施例中,如图2,所述步骤S6.2中,当点击左摇杆选项时,安卓终端设备界面上会添加一个和手柄的左摇杆形成绑定关系的映射控件;当点击右摇杆选项时,安卓终端设备界面上会添加一个和手柄的右摇杆形成绑定关系的映射控件,一个映射控件即为一个View;当点击按键选项时,如图3,安卓终端设备界面上将会出现一个暂未有绑定关系的映射控件,此时按下手柄上的其中一个按键,暂未有绑定关系的映射控件与手柄上的按下的对应按键形成绑定关系,如此依次完成与手柄的其他按键的分别形成绑定关系的映射控件的配置。

例如:当前有一个处于待绑定状态的映射控件在屏幕中,这时按下手柄上的按键A,映射控件上将会显示A,这时即和手柄上的按键A形成了绑定关系。图4中显示的是已经配置完成左摇杆,右摇杆,A按键,B按键,X按键,Y按键时的情况。

在上述实施例的基础上,本发明另一实施例中,如图2,所述步骤S8的具体步骤如下:

S8.1,客户端程序接收到手柄的操作信号;

S8.2,客户端程序将手柄输入的操作信号转换为手机触摸屏触摸信号,发送至sys_api_service;

S8.3,sys_api_service将接收到的触摸信号,调用系统内部函来使触摸信号在手机上生效。

游戏手柄的操作信号值和屏幕触摸信号的值是两种不同的模式,所以客户端接收到手柄操作信号后需要进行一个转换。

游戏手柄上有两种类型的操作装置,一种是普通按键,一种是摇杆,对于普通按键:操作比较简单,只会产生两种响应值,“按下”和“抬起”,当操作手柄的普通按键时,这两种响应值将会变成手机屏幕的触摸信号输入,触摸信号在屏幕中输入位置就是绑定了对应按键的映射控件在手机屏幕有中所在的位置,故在上述实施例的基础上,本发明另一实施例中,所述步骤S7中操作手柄的按键时,会产生“按下”和“抬起”两种响应值,所述步骤S8.2中,“按下”或“抬起”两种响应值变成安卓终端设备屏幕的相应的触摸信号的输入,触摸信号在屏幕中的输入位置为对应的按键的绑定的映射控件在安卓终端设备屏幕中所在的位置。

例如:当按下游戏手柄上的X按键时,将会有一个按下的触摸信号输入到手机屏幕中X映射控件所在的位置,同理,当手柄抬起X按键时,将会一个抬起的触摸信号输入到X映射控件所在的位置。

对于摇杆,摇杆的操作比普通按键更加复杂,如图6,当操作摇杆时,响应值是一个点在横(x轴)纵(y轴)坐标轴中的坐标点(x,y),即手柄摇杆操作状态图例所示,响应值坐标点是圆圈中的黑色点,坐标点的移动范围是只能在大圆圈内部。

根据不同的操作需求,摇杆的输入信号转换成触摸信号会形成多种模式:点对点触摸模式:所述步骤S7中操作手柄的摇杆时,所述步骤S8.2中,将响应的坐标点值等比投射到安卓终端设备屏幕中摇杆映射控件的区域,然后在投射的位置生成屏幕触摸信号,当摇杆从推动状态复位到原点时,将会生成“抬起”的屏幕触摸事件。

持续滑动模式:所述步骤S7中操作手柄的摇杆时,所述步骤S8.2中,客户端程序先判断出摇杆响应值坐标点相对于坐标轴原点的方向,称之为方向A,再判断出摇杆响应值坐标点相对于坐标轴原点的距离,称之为距离A,然后生成一个一直持续的滑动触摸信号,滑动触摸信号的方向就是方向A,滑动的速度和距离A成正相关,当距离A为0时,判断摇杆复位,滑动信号取消。

本发明技术方案的实施可使原本无法支持使用游戏手柄控制的安卓终端设备游戏可以使用游戏手柄来操控,从而方便用户的游戏操作,提升了游戏的操控体验。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

技术分类

06120113793185