Jeric-X / SyncClipboard

跨平台剪贴板同步方案 / Cross-Platform Cipboard Syncing Solution
MIT License
1.24k stars 52 forks source link

安卓端有基于tasker的实现吗? #59

Closed forrestgao closed 3 months ago

forrestgao commented 4 months ago

安卓虽然已经有两个解决方案了,如果不复杂的话建议出一个基于tasker的实现方案,我感觉就是建两个任务,首先是监听监贴板内容,一有变化就post内容到远程服务器,另一个是定时获取远程服务器内容到本地并替换剪贴板内容

Jeric-X commented 4 months ago

近期我会下载tasker试一下,如果好用的话就可以添加一个方案

Jeric-X commented 4 months ago

Tasker是收费软件,虽然不贵,但导致我没有购买和适配的动力,功能上估计也是大同小异,无法解决什么痛点 如果你有兴趣可以自己创建一个仓库适配,我可以在readme中添加指向你的仓库的链接

Jeric-X commented 3 months ago

我自己试着用tasker配好了手动触发方式,电脑端剪贴板变化后如果是文字可以同步到手机剪贴板,如果是文件或图片可以下载到手机指定目录,手机端剪贴板更新文字后也能上传到服务器~ 可是想进一步设置自动触发就比较麻烦了,电脑端和服务器的交互就是每3秒用GET查询,剪贴板变化后PUT提交,手机端如果也每3秒GET查询的话除了监控剪贴板还要监控目录下的文件,如果GET到的是文字就和手机端现在剪贴板内容比较,一致时说明不用无需处理,不一致时则更新剪贴板内容,GET到的是文件或图片就麻烦了,要查看指定目录是否有同名文件并比对md5,在不一致时下载文件。——自动触发上传就麻烦了,基本上只能监测剪贴板的变化,有变化就用PUT同步,可是这样可能会导致多余的PUT上传,比如我是因为检测到服务器侧更新才同步的手机剪贴板,这时候也会触发一次多余的PUT……而且文件不好上传到服务器侧,我用Autoshare发现日志都显示操作成功了,可实际上没法触发,当然了这些需求可能比较小众,估计也没多大的应用场景

就在这个issue讨论吧。思路是没问题的,我总结了几个问题说一下我的看法,漏的话可以继续讨论

GET到的是文件或图片就麻烦了,要查看指定目录是否有同名文件并比对md5,在不一致时下载文件

如果觉得每3秒计算一次md5对手机负担太重可以把md5也存到一个文件里,这样就不用每次计算了,无条件信任文件没有被别人手动修改

可能会导致多余的PUT上传

可以PUT前先GET,上传前看看有没有区别,当然这样就多了一个GET操作,如果觉得网络IO次数过多可以加缓存,GET到远程之后存到一个文件里,以后就只读取文件

而且文件不好上传到服务器侧,我用Autoshare发现日志都显示操作成功了,可实际上没法触发

这个只能调试/抓包之类的看http报文了

Jeric-X commented 3 months ago

在独立服务器运行环境下设定环境变量ASPNETCORE_ENVIRONMENTDevelopment后运行服务器 或桌面客户端打开服务器的情况下,打开设置里的诊断模式 访问http://ip:端口/swagger/index.html可以打开api页面,可能会方便调试

forrestgao commented 3 months ago

@Jeric-X 谢谢大佬回复,文件保存和PUT前先GET比对都是很好的解决思路,我原先是通过“事件”中的插件来调用autoshare命令的,总是失败,后面模仿别人改在“状态”里插件调用可以成功上传文件到电脑,虽然偶尔也会有失败的情况,但路子基本上通了

forrestgao commented 3 months ago

@Jeric-X 这几天验证了下tasker方案,基本上满足要求了,但不完美……我把配置文件上传了,感兴趣的朋友可以参考,如果有人能顺便优化完善就更好啦: https://github.com/forrestgao/taskerforSyncClipboard

Tasker是收费软件,虽然不贵,但导致我没有购买和适配的动力,功能上估计也是大同小异,无法解决什么痛点 如果你有兴趣可以自己创建一个仓库适配,我可以在readme中添加指向你的仓库的链接

Jeric-X commented 3 months ago

我把链接添加到主页了