0

Spotify で [次へ] ボタンと [前へ] ボタンを無効にできるようにしたいと考えています。サウンドドロップアプリがそれを成し遂げたので、それが可能であることを私は知っています.

少し調べてみましたが、私の理解では、コンテキストが null または 1 つのトラックのみを含むコンテキストでトラックを再生することになっています。考えられるすべての解決策を試してみましたが、どれもうまくいかないようです。それらのほとんどは、実際にはコンテキストが null の状態でトラックが再生される結果になりますが、[次へ]/[前へ] ボタンは常に有効になっています。

次のボタンを押すと、プレイヤーはトラックを再生せず、両方のボタンが無効になります...

以下は、私のテストアプリケーションのコードです。

var sp = getSpotifyApi(1);
var models = sp.require('sp://import/scripts/api/models');
var views = sp.require('sp://import/scripts/api/views');

models.player.observe(models.EVENT.CHANGE, function (o) {
    console.log(['Player Change', o, models.player.context]);
})

$('#play1').click(function () {
    models.Track.fromURI("spotify:track:5A1fNC7Fdb0yyh3UA6T1ef", function (track) {
        console.log(["play1", track.name]);
        models.player.play(track, null);
    });
});

$('#play2').click(function () {
    models.Track.fromURI("spotify:track:5A1fNC7Fdb0yyh3UA6T1ef", function (track) {
        console.log(["play2", track.name]);
        var p = new views.Player();
        p.play(track, null);
    });
});

$('#play3').click(function () {
    models.Track.fromURI("spotify:track:5A1fNC7Fdb0yyh3UA6T1ef", function (track) {
        console.log(["play3", track.name]);
        var pl = new models.Playlist();
        pl.add(track);
        models.player.play(track, pl);
    });
});

$('#play4').click(function () {
    console.log(["play4"]);
    models.player.play("spotify:track:5A1fNC7Fdb0yyh3UA6T1ef", null);
});

$('#play5').click(function () {
    models.Track.fromURI("spotify:track:5A1fNC7Fdb0yyh3UA6T1ef", function (track) {
        models.player.playTrack(track);
    });
});

$('#play6').click(function () {
    models.Track.fromURI("spotify:track:5A1fNC7Fdb0yyh3UA6T1ef", function (track) {
        console.log(["play6", track.name]);
        var pl = new models.Playlist();
        pl.add(track);
        models.player.playTrackWithContext(track, pl, 0);
    });
});

$('#play7').click(function () {
    var l = new models.Link("spotify:track:5A1fNC7Fdb0yyh3UA6T1ef");
    sp.trackPlayer.setContextCanSkipNext(l, false);
    console.log(["play7", models.player, sp.trackPlayer],l);
    models.player.play(l, null);
});

#play1 の結果:

["play1", "Jag är här nu"]
["Player Change", Object, null]

#play2 の結果:

["play2", "Jag är här nu"]
["Player Change", Object, null]

#play3 の結果:

["play3", "Jag är här nu"]
["Player Change", Object, "spotify:internal:temp_playlist:spotify:app:myapplication@687556942764"]

#play4 の結果:

["play4"]
["Player Change", Object, null]

#play5 の結果:

["play5", "Jag är här nu"]
["Player Change", Object, null]

#play6 の結果:

["play6", "Jag är här nu"]
["Player Change", Object, "spotify:internal:temp_playlist:spotify:app:myapplication@217702072872"]

#play7 の結果:

sp.trackPlayer.setContextCanSkipNext(l, false);

上記の行は、「パラメーター 0 をリンクに変換できませんでした」というメッセージを含む例外を生成します。

前もって感謝します

4

1 に答える 1

1

私は今いくつかの仕事をした後、これを行う方法を見つけました。

models.Track.fromURI("spotify:track:5A1fNC7Fdb0yyh3UA6T1ef", function (track) {
    var pl = new models.Playlist();
    sp.trackPlayer.setContextCanSkipPrev(pl.uri, false);
    sp.trackPlayer.setContextCanSkipNext(pl.uri, false);
    pl.add(track);
    models.player.play(track, pl);
});

これが、この問題を解決しようとして、空のコンテキストでトラックを再生することについての話で立ち往生している他の誰かに役立つことを願っています...

于 2012-08-08T07:36:12.690 に答える