【问题标题】:How to build an Android App with Media Playback from Spotify in 2021, without app remote?如何在 2021 年构建具有来自 Spotify 的媒体播放的 Android 应用程序,而无需应用程序遥控器?
【发布时间】:2021-05-15 13:20:59
【问题描述】:

我为Android制作了一个音乐播放器(Blade-Player),可以播放来自本地图书馆、Spotify和Deezer的音乐;在 2018 年。我使用 Spotify 的旧 Android Playback SDK 来实现媒体播放。

随着代码变老,And​​roid/Spotify/... 不断发展,我无法按照我想要的方式维护它,现在它到处都是黑客和肮脏东西的集合。

我正在尝试用更干净的库、使用新的 androidX 兼容库、RecyclerViews、Retrofit 和 GSon 来重写整个事情,当时我什至不知道它们存在。到目前为止,我正在获得更好的性能索引用户库和更好的 UI,所以这很棒。

问题是现在没有来自 Spotify 的 Android Playback SDK,因为它已被弃用并且不再可用。 它仍然适用于旧版本的Blade-Player,所以我仍然可以使用它,但我相信它是多次播放崩溃和错误的根源,因为它是很久以前写的(可能是线程问题,或者东西,但是Android认为当SpotifyPlayer从网络接收数据时Blade会崩溃,播放器长时间使用时无法工作,...)

我尝试使用新的App Remote SDK,但显然它不适用于音乐播放器:它所做的只是开始在 Spotify 应用程序上播放,这不是我想要的。如果我没有其他解决方案,我可能会接受,但是为多个来源拥有统一的音乐播放器的意义就消失了......

我在 Spotify 开发网站上发现了 Web Playback SDK,但它似乎不适用于 Android,而且我不相信我可以破解它来从我的应用程序中获得可用的播放。

我尝试对旧 SDK 进行“逆向工程”,但 Java 代码所做的只是通过 JNI、libspotify_sdk.so 和其他共享库中的函数调用本机函数。即使我重写了 Java 部分,我仍然必须依赖它,这显然是当前错误的来源。我可以尝试对编译后的“.so”共享库进行逆向工程,但我不确定会得到任何结果。

(编辑:我试图用 Ghidra 调查它,但我不明白发生了什么...... playUri 函数似乎只在某些播放器全局变量中执行检查和设置 uri,但后来我没有了解哪个函数进行真正的播放,从 uri 获取音频流...)

我不知道现在该做什么。由于存在旧 SDK 的事实,我确信有一种方法可以从 Spotify 曲目中获取加密流或其他内容,但我不知道如何......

如果您在应用中使用 Spotify,您是如何做到的?您是否找到旧 SDK 的解决方法,它工作正常吗?也许只是在不同的线程中调用所有旧的 sdk 函数或其他什么?

如果您知道如何在 2021 年在我的应用中包含来自 Spotify 的多媒体播放,无需应用远程控制,请告诉我。

【问题讨论】:

    标签: java android spotify


    【解决方案1】:

    为了记录,我使用librespot-java解决了这个问题

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2014-08-09
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多