donmor / Tiddloid

Tiddloid is an app to work with locally stored TiddlyWikis.
GNU General Public License v2.0
234 stars 10 forks source link

qrcode jsb #35

Closed linonetwo closed 1 year ago

linonetwo commented 2 years ago

我在做一个手机和桌面同步的插件 ,希望能够扫描二维码识别到桌面的IP地址和端口号 ,但webview里的前端没法识别二维码还有唤起摄像头,所以想要在客户端里加个jsb,调用后会扫码 然后同步返回结果。

除了作为 jsb 以外,扫码功能应该也可以用于通过扫码添加 wiki。

这个不急 我现在先通过系统自带相机扫码 然后把结果复制粘贴进去先用起来。

donmor commented 2 years ago

扫码的话估计只能异步的😂返回的时候单独调用就行 要不找找有没有js的外部脚本可以用来扫码的?

donmor commented 2 years ago

有个库叫jsQR可以看看

linonetwo commented 2 years ago

36

如果能获取图片的话是可以用这个,其实提供一个获取图片的 JSB 是最好的, 这样还能快速拍照插入 tw 了呢…(当然要通过插件压缩一下大小)

当然如果能有异步的 QR 识别的 JSB 也不错。

donmor commented 2 years ago

还是jsqr轻量一些😂回头可以你在浏览器整好之后我拿来跟着改客户端

linonetwo commented 2 years ago

我写好jsqr扫码了,你看看要不直接给webview开摄像头权限吧

donmor commented 2 years ago

行 回头给我HTML文件我试试

linonetwo commented 2 years ago

tiddly-gittly.github.io/tw-mobile-sync/

仓库在 https://github.com/tiddly-gittly/tw-mobile-sync ,需要 HTTPS 才能用摄像头,不过 localhost 应该也可以

这个主要是扫码识别一个NodeJS服务器,接下来就可以一键和服务器同步数据了。这样就可以低成本打通 Tiddloid 和太记了,之后可以太记上制卡,Tiddloid 上出门的时候背背卡片。

donmor commented 2 years ago

搞定了,回头推到master上

linonetwo commented 2 years ago

赞,这样以后手机和家里电脑同步就可以扫码了,不过这个流程在我这还有很多可以优化的地方,比如我的 nodejs wiki在手机上打开后没法直接发送给 tiddloid 添加,需要先保存 snapshort ,然后从downloads文件夹挪到一个别的文件夹才行,估计是 nodejs wiki 的问题

donmor commented 2 years ago

顺便反馈一下,我这边AVD上安卓11以下打不开摄像头,提示Undefined widget 'ScanQRWidget',chrome浏览器和Tiddloid都是

linonetwo commented 2 years ago

好吧,我可能得做一下错误处理,控制台应该报错了,说某个摄像头控制的 api 不存在,你能截一下报错吗

linonetwo commented 2 years ago

不过我估计也只能显示说浏览器版本过低,不支持摄像头功能…

donmor commented 2 years ago
2022-04-10 19:34:44.961 11978-11978/top.donmor.tiddloid I/chromium: [INFO:CONSOLE(658)] "Syntax error in boot module $:/plugins/linonetwo/tw-mobile-sync/browser-background-sync.js: Unexpected token ?
    SyntaxError: Unexpected token ?
        at eval (<anonymous>)
        at Object.$tw.utils.evalGlobal ($:/boot/boot.js:1032:22)
        at Object.$tw.modules.execute ($:/boot/boot.js:1323:15)
        at $:/boot/boot.js:1363:30
        at Object.$tw.utils.each ($:/boot/boot.js:599:12)
        at Object.$tw.modules.forEachModuleOfType ($:/boot/boot.js:1362:12)
        at Object.$tw.boot.execStartup ($:/boot/boot.js:2918:14)
        at Object.$tw.boot.startup ($:/boot/boot.js:2937:11)
        at $:/boot/boot.js:3103:12
        at Object.$tw.boot.decryptEncryptedTiddlers ($:/boot/boot.js:2178:3)", source: $:/boot/boot.js (658)
2022-04-10 19:34:45.001 11978-11978/top.donmor.tiddloid I/chromium: [INFO:CONSOLE(52)] "", source: $:/core/modules/utils/logger.js (52)
2022-04-10 19:34:45.014 11978-11978/top.donmor.tiddloid I/chromium: [INFO:CONSOLE(658)] "Syntax error in boot module $:/plugins/linonetwo/tw-mobile-sync/scan-qr-widget.js: Unexpected token .
    SyntaxError: Unexpected token .
        at eval (<anonymous>)
        at Object.$tw.utils.evalGlobal ($:/boot/boot.js:1032:22)
        at Object.$tw.modules.execute ($:/boot/boot.js:1323:15)
        at $:/boot/boot.js:1363:30
        at Object.$tw.utils.each ($:/boot/boot.js:599:12)
        at Object.$tw.modules.forEachModuleOfType ($:/boot/boot.js:1362:12)
        at Object.$tw.modules.applyMethods ($:/boot/boot.js:1386:14)
        at Widget.initialise ($:/core/modules/widgets/widget.js:53:48)
        at new Widget ($:/core/modules/widgets/widget.js:26:7)
        at Object.exports.startup ($:/core/modules/startup.js:59:19)", source: $:/boot/boot.js (658)

是不是ES版本问题?比如用了不支持的语法

linonetwo commented 2 years ago

有可能,我没想到会有在低版本浏览器上的情况,那要不我把这个语法也翻译了。这个是用了 optional channing

donmor commented 1 year ago

2.3.0整好了,可以试试

linonetwo commented 1 year ago

可以用的,就是我插件在手机上看起来不大好,我得优化一下