【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备
背景
在索尼公司的 PS3 游戏机里面,游戏手柄是通过蓝牙协议与游戏主机进行无线通信的,一个名为 Dancing Pixel 的开发商开发了一款名为 Sixaxis Controller 的安卓应用,实现了 PS3 手柄和安卓设备(安卓手机或者平板)的蓝牙连接,现在我们有机会直接使用 PS3 手柄在安卓设备上面玩游戏了。
硬件要求1:PS3 手柄 + 手柄配套的USB线
以下简称“手柄”和“USB线”,如下图所示:

硬件要求2:已经获得 ROOT 权限并且支持蓝牙的安卓设备
以下简称“设备”。实践证明,原装手柄肯定是可以连接设备的,而组装手柄则有的可以有的不可以,有意入手组装手柄的同学注意事先跟卖家确认清楚。至于设备的类型则没有限制,手机平板皆可。
经过本人实测,小米2和三星Galaxy Note 10.1都是支持与PS3手柄连接的。
软件要求1:Sixaxis Compatibility Checker
以下简称 SCC。俗话说“不是所有特仑苏都是牛奶”,同样道理,不是所有设备都能和手柄连接,于是就有了这款用来检测设备是否支持手柄的应用,小伙伴们赶紧先检测一下自己的设备是否支持这一令人兴奋功能吧。
Step1:SCC 在谷歌官方的 Play 商店上就有得下载:

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

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

SCC 里面的“Pair Controller”是给支持 OTG 的设备用的,在本文的下一节中会加以说明。
对于未能通过检测的设备,本文接下来的内容可能就暂时与你无关了。不过话说回来,设备未能通过检测又分为硬件原因和软件(系统)原因,前者是由于设备硬件本身就不支持,我们暂时是无能为力的,而后者则是可以通过刷机或者升级系统解决,比如我手上的小米2在2013年中做过一次系统升级之后,每次启动 SCC 检测都会提示 Permission denied,后来经过确认是由于此版本的 MIUI,在授权管理模块有 Bug,会导致所有应用都无法获获得 ROOT 权限,需要等到下一次系统更新时来修复,果然再次进行系统更新之后,问题解决,整个世界又清静了。所以建议各位未能通过检测的小伙伴们,可以通过互联网,搜索一下同款设备有没有连接成功的案例,进一步寻求解决的方法。
PS3 手柄和设备连接配对的原理分析
蓝牙设备通信的时候,是根据对方(目标设备)的蓝牙地址来进行定位的。这就是传说中的“你知道我的长短,我也知道你的深浅”,这一点 PS3 手柄也不例外。但一般的蓝牙设备都具有“被发现”的特性,以蓝牙音箱为例,就是打开音箱以后,其他设备可以通过搜索来定位到蓝牙音箱,然后进行连接。但 PS3 手柄却不支持这种特性,实际上 PS3 手柄第一次和 PS3 主机配对的时候,也是需要用 USB 线才能完成的。大致的流程我推测是这样:

流程中的“(4)刷新手柄芯片上的目标设备地址”是最关键的,要实现手柄和设备的连接配对,就要想办法把设备的蓝牙地址保存到手柄芯片上。
对于支持 OTG 的设备(比如小米2),只要用 OTG 线和 USB 线把手柄和设备连接好,再点一下 SCC 里面的“Pair Controller”,就能搞定。设备不支持 OTG,或者手上没有 OTG 线的小伙伴们也不用担心,用 USB 线连接手柄和电脑,通过下一节介绍的这个软件一样能搞定。
软件要求2:Sixaxis Pair Tool
以下简称“SPT”。SPT 是一个电脑上的软件,手柄第一次和设备配对的时候,可以用 SPT 把设备的蓝牙地址保存到手柄的芯片上。具体步骤如下:
Step1:在电脑上下载和安装“SixaxisPairToolSetup”,百度一下,你就知道,SPT 运行之后是这个样子的:

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

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

前文提到的某些山寨手柄无法连接设备,问题就出在这里,无法通过以上的手段更改手柄芯片上的目标设备地址,我手上就有这么一个奇葩的组装手柄。但这并不意味着我就完全没有办法用这样的手柄在设备上面玩游戏了,这事还是要看人品的,我发现用 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…”,这时设备已经准备好了:

如果遇到 SCC 检测通过,而 SC 无法 Start,可以重启一下设备,再重新运行 SC。
Step3:拿起手柄,按下手柄中间的 PS 键,可以看到手柄上的四个小红灯开始闪烁,这表示手柄根据芯片上的目标设备地址正在尝试和设备进行连接。
Step4:配对完成之后,手柄红灯停止闪烁,第一个小红灯保持常亮,在 SC 界面上可以看到输出“Client 1 connected [Battery status: Full]”,这时手柄和设备已经配对成功了。
如果配对失败,请用 SPT 重新检查确认手柄芯片上的目标设备地址是否填写正确。

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

Step6:按手柄的方向键,应该可以在 SC 的界面上看到焦点切换的效果。
Step7:不用手柄的时候,需要回到 SC 界面点“Stop”,否则设备的蓝牙和输入法都可能无法使用。
Step8:按照以下步骤可以进一步设置 SC 在 Stop 之后自动切换回哪个输入法:1.扩展菜单按钮 >2.Preferences > 3.Keyboard Emulation > 4.Default Input Method > 5.选择输入法

到此,手柄与设备的连接部分已经全部介绍完毕。真正使用手柄玩游戏的时候,还需要根据游戏来设置手柄按键的映射,更多内容可以参考【用PS3手柄在安卓设备上玩游戏系列】的其他文章。
最后提一点,SC 是有汉化版本的,目前我在百度上能找到的最新版本是 v0.7.4,从扩展菜单按钮进帮助,会有惊喜哦。

系列文章索引:http://www.cnblogs.com/duxiuxing/p/4790390.html
【用PS3手柄在安卓设备上玩游戏系列】连接手柄和设备的更多相关文章
- 【用PS3手柄在安卓设备上玩游戏系列】FC(任天堂NES/FC主机)模拟器
NESoid 是安卓系统下公认最好的FC模拟器.据我所知,现在安卓系统下面的绝大部分的FC模拟器,都是基于 NESoid 的内核来开发的. 官方网站:http://www.nesoid.com NES ...
- 【用PS3手柄在安卓设备上玩游戏系列】谈安卓游戏对手柄的支持
不同的游戏对于手柄的支持程度是不一样的,对应所需要进行的手柄设置也不尽相同.我没有这样的时间和精力,针对每一款游戏去写博客,但找出不同游戏中的共同点,针对同一类的游戏去写博客,应该是可行的.我把安卓上 ...
- 【索引】用PS3手柄在安卓设备上玩游戏系列
谈安卓游戏对手柄的支持:http://www.cnblogs.com/duxiuxing/p/3729802.html 连接手柄和设备:http://www.cnblogs.com/duxiuxing ...
- 在通知栏上玩游戏,Steve iOS 游戏实现思路
最近有一款游戏特别的火爆,叫做Steve ,一种可以在通知中心直接玩的游戏.作者的脑洞也是非常的大,实在让人佩服.其实实现起来也简单,就是用到了iOS8新特性 app extension(Today ...
- [转]如何:在设备上安装 SQL Server Compact 3.5
将设备连接到计算机,或者将仿真程序插入底座. 有关更多信息,请参见如何:将设备仿真程序插入底座和移除底座. 说明: 计算机上必须已安装了 Windows Mobile Device Center 或 ...
- 【Abode Air程序开发】在设备上进行安装
在设备上进行安装 在 Google Android 设备上安装应用程序 在 Apple iOS 设备上安装应用程序 在 Google Android 设备上安装应用程序 在项目的开发.测试和部署阶段, ...
- 在设备上启用 adb 调试,有一个小秘密
要在通过 USB 连接的设备上使用 adb,您必须在设备的系统设置中启用 USB 调试(位于开发者选项下). 在搭载 Android 4.2 及更高版本的设备上,“开发者选项”屏幕默认情况下处于隐藏状 ...
- Linux 上的游戏 Supertuxkart
Linux 上玩游戏 Supertuxkart 中午休息的时候,打开Supertuxkart游戏,这个是GNU下的一款3D赛车游戏,制作精美,玩法简单.最有趣的是,我连接笔记本的外接键盘被侦测出来是M ...
- [转] 在安卓设备上使用 Chrome 远程调试功能
你的网页内容在移动设备上的体验可能和电脑上完全不同.Chrome DevTools 提供了远程调试功能,这让你可以在安卓设备上实时调试开发的内容. 安卓远程调试支持: 在浏览器选项卡中调试网站. 在原 ...
随机推荐
- SpringMVC10数据验证
/** * @NotBlank 作用在String * @NotEmpty 作用在集合上 * @NotNull 作用在基本数据类型上 * */ public class User { @NotNull ...
- 【开源java游戏框架libgdx专题】-02-Eclipse Gradle 环境安装
创建eclipse开发环境 Eclipse 4.5 Help -> install newsoftware 填上下载地址(Eclipse 4.5及以上版本): http://dist.sprin ...
- ASP.NET-FineUI开发实践-14
以前写过一个表格自动补全,改下,就出现了部分级联修改.测试版本4.1.1 共享下JS,ext-part2.js 后台再来个得到数据的方法就可以了. 1.方法还是删除+插入,主要在 i ...
- sql server 各种函数
SQL2008 表达式:是常量.变量.列或函数等与运算符的任意组合. 1. 字符串函数 函数 名称 参数 示例 说明 ascii(字符串表达式) select ascii('abc') 返回 97 返 ...
- EasyUI-datagrid获取编辑行的数据
可以在页面对datagrid的数据直接进行修改,然后提交到数据库,但是要求在提交前获取datagrid的所有行的数据.API提供了getData方法 最后这样写才搞定 var arr=$(‘#d ...
- Windows Azure上的Odoo(OpenERP)-1.创建Ubuntu虚拟机,安装PostgreSQL 数据库
前提是您必须拥有Windows Azure的账号,如果没有的话,可以去Windows Azure 中国区网站申请免费试用账号.哈哈,我就是第一批申请的试用账号,感觉自己挺幸运的.申请的过程就不写了,请 ...
- Spring—请求映射之URL路径映射
Spring2.5引入注解式处理器支持,通过@Controller 和 @RequestMapping注解定义我们的处理器类.并且提供了一组强大的注解:需要通过处理器映射DefaultAnnotati ...
- VB php JAVA关于数据库连接数过多的解决方法
这里讲解一个关于数据库连接多多的解决办法 一般都会在方法中进行数据库的开,利用和关 不过如果在一个循环里面使用的时候 这样数据库的连接数就会过多,如果是1万次的话,数据库服务器可能就会当机 PHP 中 ...
- Wpf Binding.Path设置
Binding.Path 获取或设置绑定源属性的路径. 每个绑定通常都具有四个组件:绑定目标对象.目标属性.绑定源,以及要使用的绑定源值的路径.有关这些数据绑定概念的更多信息,请参见数据绑定概述. 使 ...
- [转帖]gesture recognition
http://wenku.baidu.com/view/53c3331a6bd97f192279e9c9.html HSI与RGB的Matlab实现. http://wenku.baidu.com/v ...