跨越生态鸿沟03:在Android和macOS之间设备协同

Oct 15, 2021 04:16

鄙人是iPad+安卓双持党,而电脑是换成了MacBook,这就导致要实现手机与各个设备之间的联动,折腾是必须的。本篇是我折腾行动的第三篇:在Android和macOS之间设备协同

全文共包括三部分:

  1. 在iOS、iPadOS或macOS上收到Android手机收到的短信
  2. 在Android与macOS之间“隔空投送”——快捷传输文件、“接力”——同步剪贴板;(已实现,暂未写出)
  3. 将Android手机的屏幕快捷投射到macOS上。(已实现,暂未写出)

第一部分 🔗

在iPad、Mac上登录网站,手机不在身边时,收不到验证码就成为一个很头大的问题。我的思路是利用Bark提供的苹果消息推送端口,在Android手机上利用Tasker监控并复制收到的短信,再将短信内容通过端口推送,并尽可能模仿iOS原生的短信通知样式。话不多说,开始上手:

App Store 搜索安装 Bark。(iPhone、iPad、ARM Mac同理)

打开,注册设备,记得允许通知权限。复制第一个卡片里的链接。将这里改成你自己的推送内容修改为以下字符串:

%SMSRN/%SMSRB?icon=https://ccj.pages.dev/images/others/applesms.png

然后用小本本记下

字符串解释:

  • %SMSRN:将短信发送方的名称(若无则为号码)作为推送标题
  • %SMSRB:短信文本内容
  • ?icon=https://ccj.pages.dev/images/others/applesms.png:我从macOS的信息app提取的图标,作为推送图标。

安装 Tasker(请自行百度汉化破解版),点击右下角的“+”,选择”事件“。

搜索“短信“,点击”收到短信“。

不用修改,直接返回。

点击“新建任务”。

随便取一个任务名称。

点击右下角的“+”。

搜索“http”,点击”HTTP Request“。

在“URL”处填入小本本记下的链接,返回。

出现以下界面则说明转发规则设置成功,可以点击左下角的“运行图标”测试,若亮绿灯则正常工作,报错也不用担心,原因后面会解释。

点击右上角的“☑️”保存设置。

试着给自己发一条短信。

iOS/iPadOS上的效果如图。

macOS上的效果如图。

大功告成!

注:本方法由于短信内容基于http链接发送,故短信内容含有网址或者特殊字符时无法转发,服务器端会报错,不过这也可以屏蔽广告短信。

第二部分 🔗

在Mac与iPhone之间,便捷(只需放在一起,无需同个局域网)的隔空投送以及同步剪贴板,令其他系统的设备羡慕。不过利用KDE Connect以及Soduto(稳定的Mac KDEC客户端)可以在局域网内高度相似地实现这种效果。

客户端下载:

  • Android:
  • iOS/iPadOS:
  • macOS:

配对 🔗

首先,安装好客户端,将Android设备、macOS或iOS设备连接至同一局域网。(同个Wi-Fi、热点、VPN内网都行,只要IP网段一样就行,看不懂可以忽略括号内的字。)

打开客户端配对,授予相应的权限。(这是开源软件,可以放心授权。)

可以两端测试是否联通。

文件传输 🔗

要从Mac往Android发送文件,只需将文件拖动到状态栏的图标即可。

要从Android往Mac或iOS发送文件,通过Android的分享菜单即可。

iOS目前仅支持分享文件app里的文件,无法通过分享菜单,所以需要先把文件“保存到文件”再操作。

短信同步 🔗

目前支持在Mac上同步Android收到的短信(与第一部分的方案相比各有优劣),以及从Mac上直接发送短信。

剪贴板同步 🔗

由于iOS后台限制,此功能暂无法在iOS上使用。

要在Mac与Android之间使用,需要先进行如下操作(需要手机里有Magisk,如不明白什么是Magisk,以下操作可以放弃):

刷入剪贴板白名单模块(需要前置模块riru),链接:

安装RE文件管理器,授予root权限。

在设置中查看KDE Connect的包名,一般都是,复制。

在RE文件管理器中找到 ,创建文件,进入编辑,粘贴包名,重启。

重启完成后,连接Android与Mac,测试效果。

第三部分 🔗

利用scrcpyADB WiFi将Android屏幕投射到Mac上,通过快捷键快速唤出。

环境部署 🔗

安装homebrew,可参考这篇文章。

安装scrcpy,如果遇到某个包安装失败,单独安装即可。

安装adb

连接测试 🔗

将手机连接至Mac,打开终端,输入:

检查是否正常投屏。结束投屏,继续输入:

拔出手机,输入:

检查是否正常投屏。

如果手机已root,可以在酷安安装ADB WiFi即可省略将手机连接至电脑打开端口的操作。

优化设置 🔗

接下来这一步是为了直接通过快捷键呼出投屏,不必再在终端执行命令。

进入用户文件夹目录,创建文件.bash_profile,将以下代码复制后保存。


export ANDROID_HOME=/opt/homebrew/Caskroom/android-platform-tools/随机字符串
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools
export PATH=${PATH}:/opt/homebrew/Cellar/scrcpy/1.18/bin

创建脚本文件,按需求选择以下三个代码之一,复制后保存。


#!/bin/bash
source ~/.bash_profile

# 本脚本用于mac与手机 位于家中 时的adb连接

# 清空连接状态以免干扰
adb disconnect

# 连接手机ADB端口
adb connect 手机IP:5555

# 启动scrcpy
scrcpy -Sw -b 100M --window-title '我的手机'

#!/bin/bash
source ~/.bash_profile

# 本脚本用于mac与手机 直接相连 时的adb连接

# 清空连接状态以免干扰
adb disconnect

# 启动scrcpy
scrcpy -Sw -b 100M --window-title '我的手机'

#!/bin/bash
source ~/.bash_profile

# 本脚本用于mac连接 手机热点 时的adb连接
# 原理:连接热点时,路由ip即为手机在热点局域网内的ip,通过命令获取路由ip为变量,使用adb连接

# 获取路由ip并生成临时文件
echo $(netstat -rn |grep UGScg) > ~/temp.txt

# 将获取的ip存为变量
HOTPOT_IP=$(grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" ~/temp.txt)

# 清空连接状态以免干扰
adb disconnect

# 连接手机ADB端口
adb connect $HOTPOT_IP:5555

# 清除临时文件
rm ~/temp.txt

# 启动scrcpy
scrcpy -Sw -b 100M --window-title '我的手机'