OwnDroid icon indicating copy to clipboard operation
OwnDroid copied to clipboard

[Feature Request] 为 OwnDroid 添加启动时 PIN 锁

Open Minoricew opened this issue 1 year ago • 25 comments

Describe the issue / 描述问题

OwnDroid 功能涉及 Device owner 等高权限的操作, 部分情况下未经授权的操作可能导致危险。

Expected implementation / 预期实现

允许用户在 OwnDroid 内设置 PIN 码 / 解锁手势, 置于后台超过指定时间 / 应用重启后自动锁定。

FAQ / 疑问解答

Q: 现在国内系统不是都自带应用锁功能嘛?

A: 类原生用户应该还是不少的吧... (Lineage 除外, 启动器自带应用锁) 以及海外 UI 也基本上没有应用锁功能。

Minoricew avatar May 12 '24 14:05 Minoricew

好主意

可以直接用安卓sdk的KeyguardManager和BiometricManager,用锁屏密码和指纹验证

BinTianqi avatar May 12 '24 15:05 BinTianqi

好主意

可以直接用安卓sdk的KeyguardManager和BiometricManager,用锁屏密码和指纹验证

对哦, 这样代码写起来也比较方便, 用户体验也无缝不少。

Minoricew avatar May 12 '24 15:05 Minoricew

~又在画饼~

现在为了动画头痛。compose自带的动画用起来都不太好用😭我正在考虑要不要用传统fragment

BinTianqi avatar May 12 '24 16:05 BinTianqi

~又在画饼~

现在为了动画头痛。compose自带的动画用起来都不太好用😭我正在考虑要不要用传统fragment

页面切换动画确实头痛。话说现在这种 JetPack Compose 实现有没有什么现成的动效库能模仿 Android 原生的 Activity 切换动画? 感觉 Android Q+ 往上的几个切换动效都挺好看的, 但现在用的组合式函数没法直接用 Activity 切换的动效。

Minoricew avatar May 12 '24 17:05 Minoricew

activity_open_enter.xml 是系统的导航动画 fast_out_extra_slow_in.xml 就是那个动画用的插值器,但是这个是贝塞尔曲线,有点搞不懂

BinTianqi avatar May 13 '24 03:05 BinTianqi

刚刚翻了一遍机子上几乎所有的 JetPack Compose 应用, 把所有不开源的排除掉, 开源的里面几乎没有任何一个应用提供了比较好的单 Activity 内切页动效解决方案。就看到了两种:

  • 需要切页时, 分出多个 Activity (这样可以直接使用 Android 的原生动效)
  • 使用淡入 / 淡出等效果并不理想的动效

还算好看的 (虽然其实和没更新前的 OwnDroid 动效很像) 大概就一个 Extinguish 了, 但是不开源。


activity_open_enter.xml 是系统的导航动画 fast_out_extra_slow_in.xml 就是那个动画用的插值器,但是这个是贝塞尔曲线,有点搞不懂

这下看不懂了, 完全没有 Android 应用 UI 开发经验。

Minoricew avatar May 13 '24 13:05 Minoricew

大概这样

https://cubic-bezier.com/#.25,.85,0,1

尽量跟系统的动画像一点吧

BinTianqi avatar May 13 '24 13:05 BinTianqi

大概这样

https://cubic-bezier.com/#.25,.85,0,1

尽量跟系统的动画像一点吧

嗯, 这样很像了。

(草, 这个网站我甚至也用过

Minoricew avatar May 13 '24 14:05 Minoricew

Describe the issue / 描述问题

OwnDroid 功能涉及 Device owner 等高权限的操作, 部分情况下未经授权的操作可能导致危险。

Expected implementation / 预期实现

允许用户在 OwnDroid 内设置 PIN 码 / 解锁手势, 置于后台超过指定时间 / 应用重启后自动锁定。

FAQ / 疑问解答

Q: 现在国内系统不是都自带应用锁功能嘛?

A: 类原生用户应该还是不少的吧... (Lineage 除外, 启动器自带应用锁) 以及海外 UI 也基本上没有应用锁功能。

我现在想到了这个功能的一个使用场景。

1000016512.png

Minoricew avatar May 13 '24 14:05 Minoricew

这个图从哪来的

🤔🤔🤔

🤯🤯🤯

BinTianqi avatar May 13 '24 15:05 BinTianqi

这个图从哪来的

🤔🤔🤔

🤯🤯🤯

F12 (Web DevTools) 改的 >w<

Minoricew avatar May 13 '24 15:05 Minoricew

F12 (Web DevTools) 改的 >w<

手机也有?

哦原来是调试网页

BinTianqi avatar May 13 '24 16:05 BinTianqi

F12 (Web DevTools) 改的 >w<

手机也有?

对的, 用的 Kiwi Browser (就是那个自带完整 Chromium 内核的浏览器)

(话说上面回我这条我好像没收到推送... 连 GitHub 的 Notifications 里显示的都是没有 Unread messages ... 不是很懂)

Minoricew avatar May 13 '24 16:05 Minoricew

开始做了😀 11bd8a28a666adda8ed2d1664ead32950e8326bb

本来想用compose的Navigation做验证页和主页的切换,但是compose的导航不好用,所以多加了一个activity,但是多一个activity后启动速度慢了好多😭

现在想想,还是试试fragment吧

BinTianqi avatar May 14 '24 14:05 BinTianqi

开始做了😀 11bd8a2

本来想用compose的Navigation做验证页和主页的切换,但是compose的导航不好用,所以多加了一个activity,但是多一个activity后启动速度慢了好多😭

现在想想,还是试试fragment吧

啊 第一次知道增加 Activity 原来会拖慢应用启动速度 (不过好像好多事都是第一次知道...

不过单 Activity 应用好像真的很少见啊。

题外话: 话说有考虑过给 OwnDroid 加个 CI 构建嘛 (确信

Minoricew avatar May 14 '24 14:05 Minoricew

不是多activity导致卡,而是启动owndroid之后,MainActivity判断有没有解锁,没解锁就跳转到AuthActivity,AuthActivity解锁完了再跳转回MainActivity,如果解锁了就直接显示内容

就是跳转的时候有点卡

(在我这个骁龙855的一加7上没什么感觉,但是在骁龙675的红米note7pro会卡)

ci啊,等6.0之后或者commit了200个之后吧

刚开始做的时候一天一个小版本,现在没啥功能可以做了,一周一个了😂

BinTianqi avatar May 14 '24 15:05 BinTianqi

不是多activity导致卡,而是启动owndroid之后,MainActivity判断有没有解锁,没解锁就跳转到AuthActivity,AuthActivity解锁完了再跳转回MainActivity,如果解锁了就直接显示内容

就是跳转的时候有点卡

(在我这个骁龙855的一加7上没什么感觉,但是在骁龙675的红米note7pro会卡)

哦, 这样...

有没有办法直接在 SplashScreen 判断解锁状态, 来确认应该跳转到哪个 Activity (?

话说现在是每次重启 OwnDroid 后需要认证还是锁屏后才需要认证? 如果是前者的话, 其实好像可以直接把 AuthActivity 作为入口活动吧。

ci啊,等6.0之后或者commit了200个之后吧 刚开始做的时候一天一个小版本,现在没啥功能可以做了,一周一个了😂

~~开 始 画 饼~~

Minoricew avatar May 14 '24 15:05 Minoricew

话说现在是每次重启 OwnDroid 后需要认证还是锁屏后才需要认证

杀后台之后需要验证

其实好像可以直接把 AuthActivity 作为入口活动吧。

感觉还是MainActivity做入口好,如果AuthActivity做入口了,那每次通过桌面图标进Owndroid又得跳转一次

BinTianqi avatar May 14 '24 15:05 BinTianqi

话说现在是每次重启 OwnDroid 后需要认证还是锁屏后才需要认证

杀后台之后需要验证

其实好像可以直接把 AuthActivity 作为入口活动吧。

感觉还是MainActivity做入口好,如果AuthActivity做入口了,那每次通过桌面图标进Owndroid又得跳转一次

(才发现单独开了个 branch

那有没有办法把验证直接塞到 MainActivity 里去呢?

Minoricew avatar May 14 '24 15:05 Minoricew

那有没有办法把验证直接塞到 MainActivity 里去呢?

有办法啊,就是fragment

这么晚不睡,你是等着看谷歌IO吗😂

BinTianqi avatar May 14 '24 15:05 BinTianqi

那有没有办法把验证直接塞到 MainActivity 里去呢?

有办法啊,就是fragment

草, 这下说回前面去了。

这么晚不睡,你是等着看谷歌IO吗😂

想起来昨天谷歌还刚刚给我发邮件邀请我在线观看 I/O 大会, 当时还没留意。

现在是刚刚开始了嘛? Welcome to Google I/O. The show will start shortly.

GenDino 好像是一个发布会的小游戏, 可惜我谷歌账号被锁区了, 所有 Genmini 相关的功能都用不了。

Minoricew avatar May 14 '24 16:05 Minoricew

开始了开始了 (Google I/O)

Minoricew avatar May 14 '24 16:05 Minoricew

换成Fragment了 b7f6eeadb2f8e25b7c535c4a5ca488532ea6ca72

支持生物识别了 405b897754ce4961c708181f732af0de31db140a

GenDino 好像是一个发布会的小游戏, 可惜我谷歌账号被锁区了, 所有 Genmini 相关的功能都用不了。

我能登录谷歌账号但是玩不了。原来是锁区啊,我在Android studio里面也用不了gemini

BinTianqi avatar May 15 '24 04:05 BinTianqi

换成Fragment了 b7f6eea

支持生物识别了 405b897

好耶 (⁠≧⁠▽⁠≦⁠)

GenDino 好像是一个发布会的小游戏, 可惜我谷歌账号被锁区了, 所有 Genmini 相关的功能都用不了。

我能登录谷歌账号但是玩不了。原来是锁区啊,我在Android studio里面也用不了gemini

对的。而且 Google 的锁区很玄学, 似乎是从账号创建的时候就跟着的。后续甚至添加了其他地区的付款方式都没有办法解除锁区。(国家 / 地区显示的是非中国大陆, 但依然无法使用任何 Genmini 相关的功能)

Android Studio 里如果使用被锁区的帐号登录并尝试使用 Genmini, 回复就只有一个警告框, 里面文本还是空的, 正常情况下确实看不懂是什么意思。

刚刚一不小心点到 Close with comment 了, 话说这 Issue 现在应该关了嘛...

Minoricew avatar May 15 '24 12:05 Minoricew

不应该关吧... 好像还不能算是全做完了。

Minoricew avatar May 15 '24 12:05 Minoricew

等分支合并了再关吧

我有个谷歌的小号,注册时用的是+86的手机号验证的,应该也被锁区了

BinTianqi avatar May 15 '24 13:05 BinTianqi

等分支合并了再关吧

好。

我有个谷歌的小号,注册时用的是+86的手机号验证的,应该也被锁区了

同, 我谷歌号也绑了 +86 号。

Minoricew avatar May 15 '24 13:05 Minoricew

差不多做好了

来看看

owndroid-auth.zip

BinTianqi avatar May 16 '24 13:05 BinTianqi

差不多做好了

来看看

owndroid-auth.zip

跑起来了。

Screenshot_2024-05-16-21-23-55-47_27f98cbba1c8b4f3dede46a209e2dd0a

非常好更新, 爱来自瓷器。

Minoricew avatar May 16 '24 13:05 Minoricew

有什么建议吗?

我觉得可以在OwnDroid标题旁边加一个锁定按钮

BinTianqi avatar May 16 '24 14:05 BinTianqi