Bug fixes
- Native crash in the player was fixed (Issue #96)
- Tracklist with size 1 can now be played using
PlayConfig.withTrackIndex(0)
(Issue #119) - Player initialization issues for certain phone models are fixed (Issue #139)
- LoginActivity stays open when fetching authentication code for 2-step Facebook authentication (Issue #145)
allowBackup=true
was removed from libraries' manifests (Issue #153)
What's new
TRACK_CHANGED
event is back.TRACK_START
andTRACK_END
are deprecated now.
Bug fixes
- CPU usage is much lower and much more battery friendly now (Issue #98)
- Player won't incorrectly report initialized state if it has been shut down.
InitializationObserver
will call back withonError
if Player had been shutdown before it finished initializing. (Issue #97)- Potentially infinite loop in the Player initialization has been fixed.
- Internal buffer size has been increased to better accommodate for unstable network connections. (Issue #98)
What's new
- Spotify Android SDK is now shipped as two separate libraries -
one that handles authentication
spotify-auth-1.0.0-beta9.aar
and one containing the playerspotify-player-1.0.0-beta9.aar
. Applications that do not use playback can now include just the authentication module. To use the new libraries a change in build files is required:The name of the package containing playback related classes was changed from// Before 1.0.0-beta9 compile 'com.spotify.sdk:spotifysdk:1.0.0-beta9@aar' // From 1.0.0-beta9 compile 'com.spotify.sdk:spotify-player:1.0.0-beta9@aar' compile 'com.spotify.sdk:spotify-auth:1.0.0-beta9@aar'
com.spotify.sdk.android.playback
tocom.spotify.sdk.android.player
. More details can be found on the Spotify Android SDK page. - We finally have x86 support! (Issue #35)
AuthenticationClient#createLoginActivityIntent
method was added. This method returns an intent that can be used to show theLoginActivity
from a Fragment. This intent can be used both withandroid.app
andandroid.support
Fragments. (Issue #73)- Additional checks were introduced to ensure that
null
callbacks can't be added to thePlayer
.
Bug fixes
- Better error handling when
LoginActivity
is launched without a calling activity. In such case a descriptive error message will be logged in the logcat. (Issue #80) BadTokenException
in LoginDialog fixed (Issue #95)
Known bugs
- Unavailable track error currently reports wrong uri.
What's new
- Login flow in the WebView. It is no longer necessary to open the web browser
to log users in. See
AuthenticationClient#openLoginActivity
for details. PlayerState
now implementsParcelable
.Spotify#getPlayer
method is static.
Known bugs
- Using queue methods together with regular playback might behave unreliably
What's New
- SDK includes native libraries for ARMv7 devices
- New way to get access to audio data. Instead of subclassing the
Player
it is now possible to create a customAudioController
and pass it to the player during creation. For details refer toAudioController
class - Subclassing the
Player
is no longer possible. This is because there's no need for it with customAudioController
s. - Initialized
Player
instance is passed to thePlayer.InitializationObserver#onInitalized
callback. - It is possible to set playback bitrate. Default bitrate is set to 160kbit/s.
For more details see
Player#setPlaybackBitrate
method andPlaybackBitrate
object. - Player has two new methods:
login
andlogout
which can be used to log back in after losing connectivity or to switch users. - It is now possible to specify which handler player should post its callback on (default is main thread)
- One of the
ConnectionStateCallback
methods has been removed. - To use all brand new options Player has a brand new Builder.
Bug fixes
- Only playback events are delivered to
PlayerNotificationCallback#OnPlaybackEvent
- Lots of internal Player fixes mostly related to concurrency.
What's New:
-
Starting a song from specified position is now possible. Check out the new
PlayConfig
class andPlayer#play(PlayConfig)
method to see how to use it. -
We added some more error handling. This means you can get new types of errors in
PlayerNotificationCallback#onPlaybackError
if something goes wrong. -
Disk cache is now turned on by default. It can be turned off by invoking
Config#useCache
withfalse
. -
Initialization of the player changed slightly. Now you'll need to pass a
Config
object with valid client ID when getting the player:// Old way: Spotify spotify = new Spotify("myauthtoken"); Player player = spotify.getPlayer(context, "mycompany", referenceObj, initObserver); // New way Spotify spotify = new Spotify(); Config playerConfig = new Config(context, "myauthtoken", "myclientid"); Player player = spotify.getPlayer(playerConfig, referenceObj, initObserver);
-
It is possible to inject a custom player to the
Spotify
class withSpotify#setPlayer
method.
Bug fixes
- We tweaked playback logic a bit. Now the player should much more responsive when skipping songs or changing contexts.
- SDK is now tested with Lollipop (Android 5.0)
Known issues
- If you try playing a playlist from an index beyond the playlist size, there's no related playback error triggered.
- The same issue occurs when trying to play a song with the initial position that is beyond its duration.
What's New:
-
We introduced two new playback events:
TRACK_START
andTRACK_END
which replace theTRACK_CHANGED
event. The uri of the track that started or finished playing can be read from player state sent with those events. (Issue #8) -
SDK now handles playback errors with new
PlayerNotificationCallback#onPlaybackError
method which can be used to handle the unavailable tracks errors. (Issue #37) -
As an experimental feature you can now use disk cache in your app. It will store streamed tracks locally on the device and read them from disk when played next time. To enable disk cache, initialize Spotify as follows:
Spotify spotify = new Spotify("myauthtoken"); spotify.useCache(true);
Bugs fixed:
InitializationObserver#onError
callback is now delivered correctly on the UI thread.
What's New:
-
You will now get player state with every player event.
-
The player state now contains information about currently playing track and its duration. (Issue #22)
-
Instead of keeping a copy of player state from native player inside Player object
getPlayerState()
is now asynchronous and requires a callback. -
We removed these methods from the Player object:
isPlaying()
getPlaybackPosition()
isShuffling()
isRepeating()
This data can now be retrieved asynchronously with
getPlayerState()
or from the player state passed with player events. -
New callback for errors while logging in.
-
Player initialization callback is now triggered after user successfully logs in.
Bugs fixed:
- SDK does not mix playback with Spotify App. (Issue #28)
What's New:
- We added the possibility to play a list of tracks (for example, an album's tracks). Playing the list of tracks also supports playing from a specified index (Issue #11).
- Improved API reference manual.
Bugs Fixed:
- We fixed clearing the buffer after pausing the playback and context switching now works correctly (Issue #21).
- No more error when context ends (Issue #20)
What's New:
- SDK now comes as a single aar library.
- Added method to clear queued tracks.
Bugs Fixed:
- getPlaybackPosition returns correct values after seeking position (Issue #7).
Known Issues:
- You can't play albums yet.
- Switching between playback contexts is buggy.
What's New:
- Initial release
Known Issues:
- SDK limited to authentication and playback. All other functionality is currently provided by the Web API.