【问题标题】:How to make songs play one after another from a listview如何让列表视图中的歌曲一个接一个地播放
【发布时间】:2016-01-11 18:53:54
【问题描述】:

我正在尝试在媒体播放器中一首一首地播放歌曲。我编写的代码播放一首歌曲然后停止。我怎样才能让它从列表视图中依次播放所有歌曲。我的代码在下面

   mp = new MediaPlayer();
    seekbar.setVisibility(SeekBar.VISIBLE);
    seekbar.setProgress(0);

    mp.setAudioStreamType(AudioManager.STREAM_MUSIC);

    mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer player) {
            seekbar.setMax(mp.getDuration());
            mp.start();

        }
    });

    b2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Toast.makeText(getApplicationContext(), "Playing sound", Toast.LENGTH_SHORT).show();
            mp.start();

            finalTime = mp.getDuration();
            startTime = mp.getCurrentPosition();

            if (oneTimeOnly == 0) {
                seekbar.setMax((int) finalTime);
                oneTimeOnly = 1;
            }
            seekbar.setProgress((int) startTime);
            myHandler.postDelayed(UpdateSongTime, 100);
            b2.setEnabled(true);
            b3.setEnabled(true);
        }
    });

    b3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mp.isPlaying()) {
                Toast.makeText(getApplicationContext(), "Pausing sound", Toast.LENGTH_SHORT).show();
                mp.pause();
                mp.seekTo(0);
            }

            b2.setEnabled(true);
            b3.setEnabled(true);
        }
    });
            b4.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int temp = (int) startTime;

                    if ((temp + forwardTime) <= finalTime) {
                        startTime = startTime + forwardTime;
                        mp.seekTo((int) startTime);
                        Toast.makeText(getApplicationContext(), "You have Jumped forward 5 seconds", Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(getApplicationContext(), "Cannot jump forward 5 seconds", Toast.LENGTH_SHORT).show();
                    }
                }
            });
    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int temp = (int) startTime;

            if ((temp - backwardTime) > 0) {
                startTime = startTime - backwardTime;
                mp.seekTo((int) startTime);
                Toast.makeText(getApplicationContext(), "You have Jumped backward 5 seconds", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(getApplicationContext(), "Cannot jump backward 5 seconds", Toast.LENGTH_SHORT).show();
            }
        }
    });


    S.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            if (isShuffle) {
                isShuffle = false;
                Toast.makeText(getApplicationContext(), "Shuffle is OFF", Toast.LENGTH_SHORT).show();
            } else {

                isShuffle = true;
                Toast.makeText(getApplicationContext(), "Shuffle is ON", Toast.LENGTH_SHORT).show();

                isRepeat = false;
            }
        }
    });
    mListItems = new ArrayList<Track>();
    final ListView listView = (ListView)findViewById(R.id.listview);
    mAdapter = new SCTrackAdapter(this, mListItems);
    listView.setAdapter(mAdapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Track track = mListItems.get(position);
            if (mp.isPlaying()) {
                mp.start();
                mp.reset();
            }

            try {
                mp.setDataSource(track.getStreamURL() + "?client_id=" + Config.CLIENT_ID);
                mp.prepareAsync();
            } catch (IOException e) {
                e.printStackTrace();
            }
            mp.start();
        }
    });

我分别创建了类 Config、SCService、SCTrackAdapter、SounndCloude、Track。请告诉我随机播放按钮的代码是否正确。如果我遗漏了什么,请提供反馈。

【问题讨论】:

    标签: javascript android loops media-player android-mediaplayer


    【解决方案1】:

    在您的 MediaPlayer 中,您可以注册 onCompletionListener 并开始播放另一首歌曲。

    见: http://developer.android.com/reference/android/media/MediaPlayer.OnCompletionListener.html

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 1970-01-01
      • 2015-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多