lyswhut / lx-music-mobile

一个基于 React native 开发的音乐软件
https://lyswhut.github.io/lx-music-doc/
Apache License 2.0
11.19k stars 1.42k forks source link

[Feature]: 新增桌面小部件功能 #596

Open melodyWxy opened 1 month ago

melodyWxy commented 1 month ago

解决方案检查

问题描述

对于那么多人最喜欢的软件,在移动端的表现里,关于桌面小部件这个功能,可以不用,但不能没有。

描述你想要的解决方案

看了下RN本身没有这方面的相关文档,可以参考一下社区里的实现。嗯。。我即将研究它,并打算为此提供一个PR。

这期间有四个里程碑:

  1. 确认这个需求是合理的,是符合预期的
  2. 确认技术可行性及设计优雅的解决方案
  3. 桌面小部件的UX设计
  4. 实现它并为此提一个MR。

描述你考虑过的替代方案

No response

附加信息

No response

zhongwen-4 commented 1 month ago

居然还有大牢

lyswhut commented 1 month ago

欢迎PR~遇到问题可以随时发出来讨论

melodyWxy commented 1 month ago

看起来安卓的这个方案比较成熟。 docs demo

它有以下优点 :

  1. 首先, 它是基于rn的,这意味着我们无须关注android实现。在与lx-music-mobile的技术栈里,是契合的。
  2. 这让上述的里程碑可以进行更细粒度的拆解 —— 我们可以先对安卓进行支持,更轻量的迭代和测试它。

我即将基于它先做安卓方面的实现,需要讨论的是: 大家是否认可这种实现方案?

lyswhut commented 1 month ago

看起来这个库并不是很多人用,而且也有一些弊端:https://github.com/sAleksovski/react-native-android-widget/issues/34 其实我更希望如果要做这个功能的话,用原生的方式去做

melodyWxy commented 1 month ago

看起来这个库并不是很多人用,而且也有一些弊端:https://github.com/sAleksovski/react-native-android-widget/issues/34 其实我更希望如果要做这个功能的话,用原生的方式去做

我打算在本地将两种方式都试一试。对于上述的问题,我这边将收集同事萌的机型方便进行实机测试。在后续的过程中,我会将两种方式的代码实现和各机型录屏效果贴在下面。

lovegaoshi commented 1 month ago

你的中文怎么听起来这么塑料

rn框架问题 js启动需要拉起reactActivity/reactContext 但是你用widget在没打开窗体的时候又拉不起js 所以ux会稀烂。ios可以用scene开,共享js桥。安卓就只有用system alert window强行拉起窗体

流媒体控件基本就是notification的复制,用不着套rnview。如果已经迁移到media3应该很好搞

我是做rn适配Android auto的。有解决方案恭请指教

lyswhut commented 1 month ago

播放器用的是 media3-exoplayer 还是看小部件期望实现哪些功能,如果只是播放器面板的话,那么播放的歌曲信息及状态应该可以直接来自exoplayer,至于在软件未启动的情况下,怎样在与小部件交互时后台启动应用就没了解过了

lovegaoshi commented 1 month ago

FYI 解决了控件与服务的问题 供参考