Android Visualizer 不会从 Spotify 流媒体音乐中提取音频

Android Visualizer won't pick up audio from Spotify streaming music

我正在制作一个 Android 音频可视化应用程序,用于流式传输 Spotify 音乐。我正在使用 Spotify 的 android-streaming-sdk 创建本地服务(无需安装 Spotify 应用程序)并从应用程序内播放音乐。我很难让 Androids Visualizer 库从 Spotify 中提取任何音频(如果我使用本地 .mp3 文件,它工作正常)。

//Start playing spotify track
player.playUri(MainActivity.operationCallback, 
               VisualizerModel.getInstance().getTrackURI(), 0, 0);

.... other code ....

MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

int audioSessionId = mediaPlayer.getAudioSessionId();

visualizer = new Visualizer(audioSessionId);
visualizer.setCaptureSize(audioSampleSize); 
visualizer.setDataCaptureListener(this, Visualizer.getMaxCaptureRate(), true, true);

visualizer.setEnabled(真);

如果我 运行 这样,一切都会编译并且 运行 没问题,但可视化工具不会拾取任何音频。这让我觉得音频 sessionId 与 Spotify 正在播放的音频 sessionId 不同。但是,如果我将 audioSessionId 切换为 0(应该听取我理解的所有音频会话混合),它会崩溃并出现此错误:

E/AudioEffect: set(): AudioFlinger could not create effect, status: -1
E/visualizers-JNI: Visualizer initCheck failed -3
E/Visualizer-JAVA: Error code -3 when initializing Visualizer.

根据他们的文档,该错误表示:由于对象初始化错误导致操作失败。

我的目标是 API 24 (Android 7.0)。

如果您对使用 Android 的 Visualizer 库有任何建议或替代方法,请告诉我。我觉得我的主要问题是我不确定如何找到 Spotify 正在播放的 audioSessionId,并且因为 Spotify 的 android-streaming-sdk 处于测试阶段(并且在他们的网站上没有提到)几乎我在 Github 上看到的没有关于它的文档。

感谢您抽出宝贵时间阅读我的问题!

我遇到了同样的错误。添加 "android.permission.RECORD_AUDIO" 到清单并请求运行时权限解决了这个问题。

to protect privacy of certain audio data (e.g voice mail) the use of the visualizer requires the permission android.permission.RECORD_AUDIO

还有

Creating a Visualizer on the output mix (audio session 0) requires permission Manifest.permission.MODIFY_AUDIO_SETTINGS

Android docs for Visualizer class