Как повторить песни на android (приложение musi c) - PullRequest
1 голос
/ 03 августа 2020

Я могу воспроизвести следующую или предыдущую песню, но я просто не могу понять, как повторить ту же песню, и я застрял на этом в течение дня. Любая помощь приветствуется

Воспроизведение следующей песни:

 public void playNext (View view){
        Song nextSong = songCollection.getNextSong(songId);
        if (nextSong != null) {
            songId = nextSong.getId();
            title = nextSong.getTitle();
            artiste = nextSong.getArtiste();
            fileLink = nextSong.getFileLink();
            coverArt = nextSong.getCoverArt();
            url = BASE_URL + fileLink;
            displaySong(title,artiste,coverArt);
            stopActivities();
            playOrPauseMusic(view);

Воспроизведение предыдущей песни

 public void playPrev (View view ){
        Song prevSong = songCollection.getPrevSong(songId);
        if ( prevSong != null) {
            songId = prevSong.getId();
            title = prevSong.getTitle();
            artiste = prevSong.getArtiste();
            fileLink = prevSong.getFileLink();
            coverArt = prevSong.getCoverArt();
            url = BASE_URL + fileLink;
            displaySong(title, artiste, coverArt);
            stopActivities();
        }   playOrPauseMusic(view);
    }

Коллекция песен:

public class SongCollection {
    // Instance variable: An array to store 2 Song objects
    private Song songArray [] = new Song[2];

    //Constructor of SongCollection class
    public SongCollection()  { prepareSongs ();  }

    //Create Song objects and store them into songArray
    public void prepareSongs () {

        //Create the first Song object
        Song theWayYouLookTonight = new Song("S1001","The Way You Look Tonight","Michael Buble",
                "a5b8972e764025020625bbf9c1c2bbb06e394a60?cid=2afe87a64b0042dabf51f37318616965",4.66,
                "michael_buble_collection");
        //Create the second Song object
        Song billieJean = new Song("S1002", "Billie Jean","Michael Jackson",
                "f504e6b8e037771318656394f532dede4f9bcaea?cid=2afe8", 4.9, "billie_jean");

        //Insert the song objects into the SongArray
        songArray[0] = theWayYouLookTonight;
        songArray[1] = billieJean;
        }
    //Search and return the song with the specified id.
    public Song searchById (String id) {
        Song song = null;
        for (int index = 0; index < songArray.length; index++) {
            song = songArray[index];
            if (song.getId().equals(id)) {
                return song;
            }
        }

        //If the song cannot be found in the SongArray,
        //The null song object will be returned
        return null;

    }
    public Song getNextSong (String currentSongId) {
        Song song = null;
        for (int index = 0; index < songArray.length; index++){
            String tempSongId = songArray[index].getId();
            if (tempSongId.equals(currentSongId)&& (index < songArray.length -1)) {
                song = songArray[index+1];
                break;
            }
        }
        return song;

    }
    public Song getPrevSong (String currentSongId){
        Song song = null;
        for (int index = 0; index < songArray.length; index++){
            String tempSongId = songArray[index].getId();
            if (tempSongId.equals(currentSongId)&& (index > 0)){
                song = songArray[index -1];
                break;
            }
        }
        return song;
    }    
}

1 Ответ

0 голосов
/ 03 августа 2020

Вы можете использовать это, чтобы получить текущую песню, но все же я думаю, что это не лучший вариант. Ваш класс SongCollection должен содержать все, а Activity / Fragment не должен использовать currentSongId для получения следующей или предыдущей песни.

public Song getCurrentSong (String currentSongId) {
    Song song = null;
    for (int index = 0; index < songArray.length; index++){
        String tempSongId = songArray[index].getId();
        if (tempSongId.equals(currentSongId)) {
            return songArray[index];
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...