Comments (11)
尝试了一下,回退到1.5.9.1版本后可以正常打开黑名单添加页面。
初步问题定位到了Android 13权限变更后,黑名单
和手动搜索
功能还并未适配SAF
APlayer/app/src/main/AndroidManifest.xml
Lines 6 to 9 in 974f430
1.6之后的版本细化了权限请求,在Android 13上不再请求储存权限。但黑名单
的添加和手动搜索
仍依赖于过往的FolderChooser
类来实现,这就导致了1.6之后的版本在Android 13及以上版本添加黑名单
和进行手动搜索
时,即使授予全部权限仍会报错“应用需要必要的运行权限”。
APlayer/app/src/main/java/remix/myplayer/ui/activity/SettingActivity.kt
Lines 1215 to 1242 in 974f430
不过这个我不太会修(;′⌒`)尝试了一天面向GPT编程之后,感觉可能还是得等其他人来修了😥
顺带一提Q音的搜索接口好像也挂了,酷狗现在似乎也不再lrc格式中附带翻译了,这部分的讨论要新建个issue来讨论,还是用以前那个网易云接口的issue修改一下集中讨论呢?
from aplayer.
因为最近工作太忙,权限的问题等后面空一点再修复,当然更欢迎pr
接口的话不建议花太多时间了,估计后面都慢慢不能用了
from aplayer.
权限适配这边我之前试了下,不过还是对这块不太熟,试了下没修好,估计到时候还是得你们来。😥
接口的话不建议花太多时间了,估计后面都慢慢不能用了
这倒确实,不过歌词功能也是我一开始来使用的一大痛点😥所以还是借这个issue说一下大体的情况吧,看看后面怎么处理
- Q音的搜索接口感觉动得比较频繁,而且大多数都要求登录,可能这部分没什么比较好的办法了。
- 酷狗现在似乎仅在其专有的krc格式中附带翻译了,格式的转换倒是在其他地方看到过已经有逆向成果了,跑了一下也能跑通,不过他们的内容格式也不是标准的双语lrc格式,他们用了一个叫
[language:]
的行携带了一个base64过后的json,json的内容包含不包含时间戳的歌词注音和(或)翻译,其按照行数和剩余部分的lrc歌词对应。这部分的处理我也不太会写😥
from aplayer.
希望能够尽快修复黑名单和文件选择器的问题
from aplayer.
我尝试修复了一下黑名单的SAF适配,不过因为对Android开发确实不太熟悉,现在的问题是我不知道要如何从uri获取文件夹的绝对路径,但我已经不知道该怎么改了🤔你可以看看,如果需要的话,我可以提pr,然后一起来修从uri取文件夹路径的问题。 @rRemix
master...qjzcj2008:APlayer:SAF-Fix
目前的问题在于我不知道该如何从uri取得文件夹的绝对地址。
这是我目前使用的从uri获取文件夹路径的方法
https://github.com/qjzcj2008/APlayer/blob/331678d4d143636208446698aea282c73d181652/app/src/main/java/remix/myplayer/ui/activity/SettingActivity.kt#L133-L148
但不知道为什么这个方法无法获取到上级文件夹,仅能够获得当前文件夹的名称,并不能获取到文件夹的完整相对路径,使得我的这个修复版本仅能在添加一级目录时有效,并且挂载点信息似乎无法取得。
获取到的uri的content提供者都是content://com.android.externalstorage.documents/
似乎无法区分文件是否来自外部储存(不过我这边的设备都不支持SD卡了,所以也没有进行测试),这部分我目前是用Environment.getExternalStorageDirectory()
去和文件夹的相对路径进行拼接的(其实感觉和写死/storage/emulated/0/
已经没啥差别了🤔)
获取到的uri中倒是包含文件夹的完整相对路径,但似乎对一些文件夹其uri也是特殊的,如果要从uri取的话感觉要做好几种状况的应对。
content://com.android.externalstorage.documents/tree/primary:Lv1/Lv2/document/primary:Lv1/Lv2/
content://com.android.externalstorage.documents/tree/home:Lv1/document/home:Lv1
分别对应/Lv1/Lv2
和/Document/Lv1
这两个路径,似乎对于document文件夹及其子文件夹的uri是特殊的(目前仅发现这个特例)
不知道这部分有没有什么更好的处理方法。
说起来,顺便翻了一下,似乎对接口返回歌词的处理是放在src/main/java/remix/myplayer/lyric/LyricSearcher.kt
里的?之前研究了一下,Q音的接口要修可能比较难了,大部分接口都要求登录才可以使用,但酷狗那边的翻译感觉还有修一修的希望,要不看看后面有空我开个issue大家讨论一下看看能不能修一修?
from aplayer.
我尝试修复了一下黑名单的SAF适配,不过因为对Android开发确实不太熟悉,现在的问题是我不知道要如何从uri获取文件夹的绝对路径,但我已经不知道该怎么改了thinking你可以看看,如果需要的话,我可以提pr,然后一起来修从uri取文件夹路径的问题。 @rRemix master...qjzcj2008:APlayer:SAF-Fix
目前的问题在于我不知道该如何从uri取得文件夹的绝对地址。 这是我目前使用的从uri获取文件夹路径的方法 https://github.com/qjzcj2008/APlayer/blob/331678d4d143636208446698aea282c73d181652/app/src/main/java/remix/myplayer/ui/activity/SettingActivity.kt#L133-L148 但不知道为什么这个方法无法获取到上级文件夹,仅能够获得当前文件夹的名称,并不能获取到文件夹的完整相对路径,使得我的这个修复版本仅能在添加一级目录时有效,并且挂载点信息似乎无法取得。 获取到的uri的content提供者都是
content://com.android.externalstorage.documents/
似乎无法区分文件是否来自外部储存(不过我这边的设备都不支持SD卡了,所以也没有进行测试),这部分我目前是用Environment.getExternalStorageDirectory()
去和文件夹的相对路径进行拼接的(其实感觉和写死/storage/emulated/0/
已经没啥差别了thinking) 获取到的uri中倒是包含文件夹的完整相对路径,但似乎对一些文件夹其uri也是特殊的,如果要从uri取的话感觉要做好几种状况的应对。content://com.android.externalstorage.documents/tree/primary:Lv1/Lv2/document/primary:Lv1/Lv2/
content://com.android.externalstorage.documents/tree/home:Lv1/document/home:Lv1
分别对应/Lv1/Lv2
和/Document/Lv1
这两个路径,似乎对于document文件夹及其子文件夹的uri是特殊的(目前仅发现这个特例) 不知道这部分有没有什么更好的处理方法。说起来,顺便翻了一下,似乎对接口返回歌词的处理是放在
src/main/java/remix/myplayer/lyric/LyricSearcher.kt
里的?之前研究了一下,Q音的接口要修可能比较难了,大部分接口都要求登录才可以使用,但酷狗那边的翻译感觉还有修一修的希望,要不看看后面有空我开个issue大家讨论一下看看能不能修一修?
Google 的设计好像就是不想让人拿绝对路径……
看看歌曲文件的 Uri 能不能直接拿来匹配?
或者也可以直接用 https://developer.android.com/reference/android/provider/MediaStore.MediaColumns#RELATIVE_PATH,手动输入路径或者用获取到的所有路径糊一个和原来一样的 UI?
from aplayer.
看看歌曲文件的 Uri 能不能直接拿来匹配?
那要改的地方太多了🤔其他地方能跑还是最好不去动比较好🤔
用最粗暴的办法手搓了一个从uri拼接完整地址的办法🤔我这边试了一下倒是没问题,为了保险起见我只写了现在见到的两种形式的uri的转化,其他类型的uri遇到了直接抛null取消后面的流程🤔
我提pr了
from aplayer.
权限适配这边我之前试了下,不过还是对这块不太熟,试了下没修好,估计到时候还是得你们来。😥
接口的话不建议花太多时间了,估计后面都慢慢不能用了
这倒确实,不过歌词功能也是我一开始来使用的一大痛点😥所以还是借这个issue说一下大体的情况吧,看看后面怎么处理
- Q音的搜索接口感觉动得比较频繁,而且大多数都要求登录,可能这部分没什么比较好的办法了。
- 酷狗现在似乎仅在其专有的krc格式中附带翻译了,格式的转换倒是在其他地方看到过已经有逆向成果了,跑了一下也能跑通,不过他们的内容格式也不是标准的双语lrc格式,他们用了一个叫
[language:]
的行携带了一个base64过后的json,json的内容包含不包含时间戳的歌词注音和(或)翻译,其按照行数和剩余部分的lrc歌词对应。这部分的处理我也不太会写😥
如果能找到接口的话可以提供给我,我来做后续的适配 @qjzcj2008
from aplayer.
酷狗歌词的接口还好,只要改一个参数就好,主要是后续的处理,文件解密和翻译合成。
APlayer/app/src/main/java/remix/myplayer/request/network/HttpClient.kt
Lines 133 to 135 in 0d7f0e9
接口把这里参数的
lrc
改成krc
就好krc文件的解密算法在这里有别人的逆向结果和可用样例代码。
返回的数据结构和原来的一致,只是content
的值变为了base64后的krc文件,krc解密后的文件样例如下
[id:$00000000]
[ar:*]
[ti:*]
[by:]
[language:一个base64后的json]
[00:00.000]***
[00:07.200]***
[00:14.400]***
对language行的base64解码后得到的文件样例如下
{
"content": [
{
"language": 0,
"lyricContent": [
["***"],
["***"],
["***"]
],
"type": 1
},
{
"language": 0,
"lyricContent": [注音(可能会根据语言不同?)],
"type": 0
}
],
"version": 1
}
language
似乎并没有意义,语言区分依靠type
,目前观察下来type
为1时为中文翻译,lyricContent
中的翻译(不带时间戳)与krc解密后[language:]
行以下的行一一对应。
之前测的时候发现好像带个什么参数会更容易命中带翻译的krc,不过当时没记下来,现在测试的时候好像也没遇到不带翻译的krc了😂不过感觉kg现在这搜索接口有点怪怪的,有些就搜不出来,去网页版试了一下同样的关键词是有结果的,不知道什么情况,再观察看看吧。
q音那边似乎是老接口基本上全下线了,看了一下现在的接口基本上要么得登录,要么要sign,再说吧。@rRemix
实在不行要不先加个选项弹个输入框让用户自己填mid先凑合凑合🤣以后可以考虑变成让用户填网页地址,自动从里面提mid🤣
from aplayer.
使用的是release版本APlayer_v1.6.1.0_nongoogle_2023-04-27.16-05.apk,系统版本Android13 MIUI 14.0.7,遇到了同样的问题,无法手动扫描。
并且无法自动扫描出SD卡中的音乐文件,导入设备可以正常读取,回退到多个旧版本尝试也没用(1.5.9.1手动扫描崩溃),希望能够尽快修复。
from aplayer.
非常好软件,爱来自瓷器 可惜bug还没修(
插个眼,大佬有空时修下吧
from aplayer.
Related Issues (20)
- Alist的WEBDAV下的flac无法播放 HOT 12
- 歌曲tab下,点击事件全部失效 点击歌曲无法播放,小米MIUI 14.0.17,安卓13 HOT 10
- 操作逻辑优化建议 HOT 1
- 兼容问题。 HOT 2
- 播放历史&最近添加不显示歌曲 HOT 1
- 崩溃 HOT 7
- [FR] 音乐标签编辑支持封面图片和歌词编辑 HOT 1
- 报错了但我看不懂,是不是因为歌曲文件太小788kb的 HOT 3
- Hide Desktop lyric when paused HOT 1
- 一歌多歌手不分开显示 HOT 1
- Aplyer在小米澎湃os上的问题反馈 HOT 10
- 能否加入A2DP功能,来播放蓝牙连接的音乐,可以使其作为一个车载播放器使用 HOT 1
- 小建议:歌单导出的m3u为绝对路径,可否增加相对路径设置,包括兼容Windows格式的M3U列表? HOT 1
- 歌词问题和封面问题 HOT 3
- 希望支持批量导入m3u,以及导入m3u列表后,歌单列表和m3u定义的顺序保持一致 HOT 4
- Music is not paused when using my earphones HOT 4
- 提议:横屏模式下能否将歌词放置左侧或取消专辑图片 HOT 4
- Aplayer在播放Webdav挂载的音乐时,点击下一首,会出现卡死的情况 HOT 14
- 1.6.4.0播放内嵌封面及歌词的MP3时,主界面会闪退 HOT 2
- 远程列表可以整合到播放菜单里面吗?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from aplayer.