Я создаю Android-приложение для визуализации звука для потоковой передачи музыки Spotify. Я использую android-streaming-sdk от Spotify, который создает локальный сервис (нет необходимости устанавливать приложение 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. Однако, если я переключаю 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. Я чувствую, что моя главная проблема в том, что я не уверен, как найти audioSessionId, на котором воспроизводится Spotify, и поскольку Spotify android-streaming-sdk находится в бета-версии (и не упоминается на их веб-сайте), на нем практически нет документации из того, что я вижу на Github.
Спасибо, что нашли время прочитать мой выпуск!