在Android移动设备上安装Node.js,并通过ad-hoc通信与其他移动设备进行连接
我在东京游戏展2018的独立游戏展区中协助解说了一款名为《伊塞基攀登者》的游戏。
只是因为我觉得只解说游戏也有点无聊,所以我想利用我来自青森的事实,让观众选择我是用津轻方言解说还是用普通标准语解说。我制作了下面这样的小工具带去了。
*对于大多数玩过伊勢吉宗的人来说,他们可能会想到:“这东西是什么?”原因我之后会解释。
工作方案
通过Android平板电脑,我将对应点击按钮的消息发送到装有nodejs的Android手机上。
尽管应用在平板电脑上运行,但其覆盖了整个屏幕并绘制了一个全黑的矩形,所以在卷起来的时候看起来就像是一块木板。
我会将手机放在客人看不见的地方,偷偷瞥一眼接收到的消息并确认后,就可以说“知道了!我会用浓烈的津载方言跟您交流!”或者“稍微夹杂一点点津载方言来与您交流!”之类的话了。
这个小工具的意义是什么?
没有了。
我觉得现在可能已经到了把Android手机设备变成服务器的时代了,于是我搜索了一下,发现真的有方法,所以我只是想试试看而已。
做法
有很多方法可以制作,但最简单的方法是在手机端(作为确认按下的按钮的设备)上安装node.js,并制作一个将在平板上点击的按钮发送到手机上的应用程序。
即使边查找资料,我认为也可以在大约8小时内使手机和平板都能正常运行。
以下是一篇解释如何在Android移动设备上安装node.js的文章,我在此表示感谢并作为参考。
使用termux在Android上使用node.js+WEB服务器
尝试在Android手机上使用Node.js进行多线程处理
使用Android应用程序和Node.js进行协作并打印出Hello World。
安装Termux应用程序
只需安装Termux这个应用程序,即使不是像使用电脑那样强大,也能够做很多不同的事情。
安装Termux之后,您可以立即安装Node.js,但我认为为了方便开发,最好进行一些设置。
请确保可以进行存储操作
直接启动应用程序后,您可以自由地在当前目录中进行各种安装和其他操作,但我认为您更倾向于在浏览器类应用程序中更容易查看文件群并进行操作。
因为这是nodejs,所以我认为您经常需要安装模块,操作存储等等,因此首先在termux上执行以下命令。
$ termux-setup-storage
这将为Termux应用程序授予对存储进行各种操作的权限。
但由于安全方面的原因,即使使用ls命令也无法查看某些目录的内容,所以最好在查找并研究的过程中边搜索边尝试找到适合进行操作的位置。
由于我对许多事情都不太了解,所以我总是在storage/shared/目录下创建一个名为test_dir的目录来进行操作。在这里,我会克隆或拉取Github存储库。
使命更容易地输入命令
如果有外接键盘的话,我认为那就很好了。但是如果没有的话,只需下载一个叫做Hacker’s Keyboard的应用程序,就足够使用了。(可以使用Tab键、按下Ctrl键、有上下方向键)
还有,因为我几乎没有使用过终端之类的工具,所以不知道,但我发现fish shell非常方便,所以我建议在termux上安装它。(这是一个有名的东西吧?太方便了,感动了)
$ pkg install fish
在安装了fish shell之后
$ fish
所以,模式会切换,出现类似于代码提示的东西,以前输入过的内容将作为提示出现。而且还会有颜色标记。
(→使用键盘或Tab键可以启用输入补全功能)
安装Git
因为我希望主要的开发工作在电脑上进行,所以我将其制作在电脑上并上传到了Github,然后让Android设备接收。
$ apt install git
现在只需要通过git命令从在Github上创建的存储库中克隆或拉取即可。我通常使用OpenHub for GitHub这个Android客户端来复制克隆地址。
一旦为您提供一种中文的重述方式:当具备便于开发的环境后,可进行 Node.js 的安装。
$ apt install coreutils
$ apt install nodejs
通过这个方法,你可以安装Node.js,并且可以使用npm。然后,在PC端使用npm安装模块,将其上传至Github,然后在Android端将其拉取下来并执行,对于不太编写程序的我来说,这是一种便利的工作流程。
说实在的,在Termux上即便执行 $ npm i babel -D (–save-dev),有时也会出现错误无法安装,所以我随便按照那种方式继续进行开发了。
(也可能是因为不同终端可以正常执行 –save 进行安装?)
为了实现类似于Ad Hoc通信的事情
如果你在已经安装了Node.js的设备(如智能手机)上开启了热点,并通过平板电脑连接到该热点,那么手机的IP地址将是”192.168.43.1″(固定不变),而平板电脑的IP地址将是”192.168.43.xxx”(可能是DHCP,不能固定)。这样,局域网会自动连接起来。
因此,你只需要在平板电脑上安装的应用程序中自由发送请求到”192.168.43.1″(加上相应的端口号)即可。
后端和前端的源代码可以参考Github。
基本上,我只是為了在使用Node.js進行通信時能更輕鬆地編寫代碼,所以安裝了Babel,以便使用Express。
为了隐藏平板电脑显示的用户界面(UI),当纸卷上时,还需要在全屏上绘制一个黑色矩形的小花招,将其添加到应用程序中。
我只是触摸了一个由手写在一块普通的石板上的按钮,却能告诉面前的我触摸了哪个按钮,就像是古老的魔术一样。
为什么在东京游戏展上没有使用它?
我在第一天的商务日的开始尝试了一下,真是让我惊讶的是有那么多人来参观,因为我希望尽可能多的人来玩「イセキクライマー」,所以为了省去多余的解说,我很快地把这个装置放了起来,大约15分钟就收拾好了(´;ω;`)ブワッ
非常感谢所有参与和玩这个装置的人们!