这个项目包含两部分:
- 电脑端服务:负责真正执行关机、重启、睡眠、锁屏等操作。
- Android 手机 App:负责发送控制命令。
- 电脑上双击
start.bat。 - 手机 App 里填写电脑端显示的地址,例如
http://10.100.1.48:8765。 - 手机 App 里填写电脑端显示的 PIN。
当前这台电脑的 PIN 是 890361。
不同网络不能只靠手机直接连电脑,中间必须有一个“公网中转服务”。现在项目已经加了远程中转模式:
- 在一台公网服务器上运行
relay-server.js,或双击start-relay.bat测试本机中转。 - 电脑端运行
start-remote-client.bat,让电脑端连接这个中转服务。 - 手机 App 的“电脑端服务地址”填写中转服务地址,例如
http://你的公网服务器:8787。 - 手机 App 的 PIN 仍然填写电脑端 PIN。
这样手机和电脑不需要在同一个 Wi-Fi,只要它们都能访问同一个中转服务即可。
最简单的方式:每台电脑使用不同 PIN。
- 电脑 A:PIN 111111
- 电脑 B:PIN 222222
- 手机要控制哪台,就填哪台的 PIN
如果多台电脑使用同一个 PIN,远程中转会把命令发给这个 PIN 下所有在线电脑,不建议这样做。
PIN 只有 6 位,适合个人测试和内网/私有服务器使用。真正长期公网使用,下一步应该升级成:
- PIN 只用于首次配对
- 配对后手机保存一个长密钥
- 中转服务限制错误 PIN 尝试次数
- 中转服务使用 HTTPS
已经生成过 APK:
android-app/build/manual/apk/phone-power-control.apk
以后要重新打包,双击:
build-apk.bat
server.js:电脑端服务,支持局域网模式和远程中转模式。relay-server.js:公网中转服务。start.bat:启动局域网电脑端服务。start-demo.bat:演示模式,不会真的关机。start-relay.bat:启动中转服务。start-remote-client.bat:电脑端连接中转服务,需要先改里面的公网地址。build-apk.bat:生成 Android APK。