背景

硬件要求1:PS3 手柄 + 手柄配套的USB线

硬件要求2:已经获得 ROOT 权限并且支持蓝牙的安卓设备

软件要求1:Sixaxis Compatibility Checker

PS3 手柄和设备连接配对的原理

软件要求2:Sixaxis Pair Tool

软件要求3:Sixaxis Controller


背景

在索尼公司的 PS3 游戏机里面,游戏手柄是通过蓝牙协议与游戏主机进行无线通信的,一个名为 Dancing Pixel 的开发商开发了一款名为 Sixaxis Controller 的安卓应用,实现了 PS3 手柄和安卓设备(安卓手机或者平板)的蓝牙连接,现在我们有机会直接使用 PS3 手柄在安卓设备上面玩游戏了。

硬件要求1:PS3 手柄 + 手柄配套的USB线

以下简称“手柄”和“USB线”,如下图所示:

【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备-冯金伟博客园

硬件要求2:已经获得 ROOT 权限并且支持蓝牙的安卓设备

以下简称“设备”。实践证明,原装手柄肯定是可以连接设备的,而组装手柄则有的可以有的不可以,有意入手组装手柄的同学注意事先跟卖家确认清楚。至于设备的类型则没有限制,手机平板皆可。

经过本人实测,小米2和三星Galaxy Note 10.1都是支持与PS3手柄连接的。

软件要求1:Sixaxis Compatibility Checker

以下简称 SCC。俗话说“不是所有特仑苏都是牛奶”,同样道理,不是所有设备都能和手柄连接,于是就有了这款用来检测设备是否支持手柄的应用,小伙伴们赶紧先检测一下自己的设备是否支持这一令人兴奋功能吧。

Step1:SCC 在谷歌官方的 Play 商店上就有得下载:

【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备-冯金伟博客园

Step2:安装完毕之后,先打开设备的蓝牙,然后在 SCC 里面点“Start”启动设备检测:

【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备-冯金伟博客园

Step3:静待片刻,检测通过的设备会看到以下的提示语:Your device appears to be supported……此处省略好些字。

【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备-冯金伟博客园

SCC 里面的“Pair Controller”是给支持 OTG 的设备用的,在本文的下一节中会加以说明。

对于未能通过检测的设备,本文接下来的内容可能就暂时与你无关了。不过话说回来,设备未能通过检测又分为硬件原因和软件(系统)原因,前者是由于设备硬件本身就不支持,我们暂时是无能为力的,而后者则是可以通过刷机或者升级系统解决,比如我手上的小米2在2013年中做过一次系统升级之后,每次启动 SCC 检测都会提示 Permission denied,后来经过确认是由于此版本的 MIUI,在授权管理模块有 Bug,会导致所有应用都无法获获得 ROOT 权限,需要等到下一次系统更新时来修复,果然再次进行系统更新之后,问题解决,整个世界又清静了。所以建议各位未能通过检测的小伙伴们,可以通过互联网,搜索一下同款设备有没有连接成功的案例,进一步寻求解决的方法。

PS3 手柄和设备连接配对的原理分析

蓝牙设备通信的时候,是根据对方(目标设备)的蓝牙地址来进行定位的。这就是传说中的“你知道我的长短,我也知道你的深浅”,这一点 PS3 手柄也不例外。但一般的蓝牙设备都具有“被发现”的特性,以蓝牙音箱为例,就是打开音箱以后,其他设备可以通过搜索来定位到蓝牙音箱,然后进行连接。但 PS3 手柄却不支持这种特性,实际上 PS3 手柄第一次和 PS3 主机配对的时候,也是需要用 USB 线才能完成的。大致的流程我推测是这样:

【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备-冯金伟博客园

流程中的“(4)刷新手柄芯片上的目标设备地址”是最关键的,要实现手柄和设备的连接配对,就要想办法把设备的蓝牙地址保存到手柄芯片上。

对于支持 OTG 的设备(比如小米2),只要用 OTG 线和 USB 线把手柄和设备连接好,再点一下 SCC 里面的“Pair Controller”,就能搞定。设备不支持 OTG,或者手上没有 OTG 线的小伙伴们也不用担心,用 USB 线连接手柄和电脑,通过下一节介绍的这个软件一样能搞定。

软件要求2:Sixaxis Pair Tool

以下简称“SPT”。SPT 是一个电脑上的软件,手柄第一次和设备配对的时候,可以用 SPT 把设备的蓝牙地址保存到手柄的芯片上。具体步骤如下:

Step1:在电脑上下载和安装“SixaxisPairToolSetup”,百度一下,你就知道,SPT 运行之后是这个样子的:

【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备-冯金伟博客园

Step2:用 USB 线连接手柄和电脑,待驱动安装完毕,SPT 识别出手柄之后,能够在 Current Master 后面看到当前手柄芯片上的目标设备地址。原来的目标设备地址是多少我们不需要关心,在 Change Master 后面填好我们要连接的设备的蓝牙地址,点“Update ”。查看设备蓝牙地址的方法多了去了,这里不一一列举,在上文提到的 SCC 里面也能看到:

【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备-冯金伟博客园

Step3:稍等片刻,如果 Current Master 后面的地址变成了我们在 Change Master 填写的那个,说明手柄芯片上的目标设备地址已被更改,接下来就可以拔掉 USB 线,开始进行手柄和设备的蓝牙连接了。

【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备-冯金伟博客园

前文提到的某些山寨手柄无法连接设备,问题就出在这里,无法通过以上的手段更改手柄芯片上的目标设备地址,我手上就有这么一个奇葩的组装手柄。但这并不意味着我就完全没有办法用这样的手柄在设备上面玩游戏了,这事还是要看人品的,我发现用 OTG 线和 USB 线连接手柄和小米2,能够把 PS3 手柄当有线手柄用。

软件要求3:Sixaxis Controller

以下简称 SC。如果说前面讲的内容都是前戏,那这一节的内容绝对就是高潮了。SC 才是实现手柄和设备连接的关键,SC 在运行的时候需要 ROOT 权限,它之前在谷歌官方的 Play 商店上是一个收费应用,但最近好像被下架了,反正我是搜索不到了。还好我大中华局域网下面的安卓应用市场多了去了,想找一个 SC 的应用安装包,百度一下,你就知道

安装完毕之后,我们开始使用 SC 来连接手柄和设备,操作步骤如下:

Step1:如果设备上已经运行了 SCC,先将其关闭,然后再运行 SC。SC 的界面和前面提到的 SCC 非常相像,一看就知道是同一个妈生的。

Step2:确认设备的蓝牙已经打开,在 SC 里面点“Start”,直到界面上输出“Listening for controllers…”,这时设备已经准备好了:

【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备-冯金伟博客园

如果遇到 SCC 检测通过,而 SC 无法 Start,可以重启一下设备,再重新运行 SC。

Step3:拿起手柄,按下手柄中间的 PS 键,可以看到手柄上的四个小红灯开始闪烁,这表示手柄根据芯片上的目标设备地址正在尝试和设备进行连接。

Step4:配对完成之后,手柄红灯停止闪烁,第一个小红灯保持常亮,在 SC 界面上可以看到输出“Client 1 connected [Battery status: Full]”,这时手柄和设备已经配对成功了。

如果配对失败,请用 SPT 重新检查确认手柄芯片上的目标设备地址是否填写正确。

【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备-冯金伟博客园

Step5:在 SC 里面点“Change IME”,修改设备使用的输入法,选择“Sixaxis Controller”:

【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备-冯金伟博客园

Step6:按手柄的方向键,应该可以在 SC 的界面上看到焦点切换的效果。

Step7:不用手柄的时候,需要回到 SC 界面点“Stop”,否则设备的蓝牙和输入法都可能无法使用。

Step8:按照以下步骤可以进一步设置 SC 在 Stop 之后自动切换回哪个输入法:1.扩展菜单按钮  >2.Preferences > 3.Keyboard Emulation > 4.Default Input Method > 5.选择输入法

【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备-冯金伟博客园

到此,手柄与设备的连接部分已经全部介绍完毕。真正使用手柄玩游戏的时候,还需要根据游戏来设置手柄按键的映射,更多内容可以参考【用PS3手柄在安卓设备上玩游戏系列】的其他文章。

最后提一点,SC 是有汉化版本的,目前我在百度上能找到的最新版本是 v0.7.4,从扩展菜单按钮进帮助,会有惊喜哦。

【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备-冯金伟博客园


系列文章索引:http://www.cnblogs.com/duxiuxing/p/4790390.html