如何通过单击歌曲列表来播放歌曲

时间:2013-03-08 02:37:40

标签: listview android-mediaplayer

我是Android编程的新手。我想构建MediaPlayer应用程序。

实际上我之前已经构建了一个简单的MediaPlayer应用程序。我以前的应用程序只有一个按钮播放,一个按钮暂停,一个按钮停止..当点击播放按钮时,歌曲将播放。

我的新应用程序想要使用ListLayout和播放,暂停和停止等几个按钮来制作歌曲列表。我想要的是当我点击歌曲列表中的第一首歌时,第一首歌将播放..

我已经在谷歌进行了一些研究,但没有找到我能理解的简单答案。我希望你们能帮助我......谢谢你们很多.. =)

这是我的UPDATED代码..我不知道如何调用歌曲列表..我将我的song1,song2,song3存储在原始文件中..但是对于播放歌曲,我只能播放一首歌曲只有..

  package com.example.test7;

  import android.media.MediaPlayer;
  import android.os.Bundle;
  import android.app.Activity;
  import android.view.View;
  import android.widget.AdapterView;
  import android.widget.ArrayAdapter;
  import android.widget.ImageButton;
  import android.widget.ListView;
  import android.widget.Toast;
  import android.widget.AdapterView.OnItemClickListener;

  public class MainActivity extends Activity {

MediaPlayer mp;
int position;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mp = MediaPlayer.create(this,R.raw.song1);

    setContentView(R.layout.activity_main);

    ListView list = (ListView) findViewById(R.id.listView1);
    String[] values = new String[] {"song1","song2","song3","song4","song5",
                                    "song6","song7","song8","song9","song10"};

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, android.R.id.text1, values);

    list.setAdapter(adapter);

    list.setOnItemClickListener(new OnItemClickListener () {
          public void onItemClick(AdapterView<?> parent, View view,
                  int position, long id) {

            ListView list2 = (ListView) findViewById(R.id.listView1);
            String item = (String) list2.getAdapter().getItem(position);
            Toast.makeText(MainActivity.this, item + " selected", 5).show();

            mp.start();
        }
    });

    ImageButton btnPlay = (ImageButton) this.findViewById(R.id.imageButton1);
    ImageButton btnPause = (ImageButton) this.findViewById(R.id.imageButton2);
    ImageButton btnStop = (ImageButton) this.findViewById(R.id.imageButton3);

    btnPlay.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
        if (mp == null) {
                mp = MediaPlayer.create(MainActivity.this, R.raw.song1);

            }
        if (!mp.isPlaying()) {
             mp.start();

           }

        }
    });

    btnPause.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (mp != null)
            {
                mp.pause();
                position = mp.getCurrentPosition();
            }

        }
    });

    btnStop.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (mp != null)
            {
                if (mp.isPlaying()) {
                    mp.stop();
                }
                mp.release();
                mp = null;
            }
        }
    });
    }
}

2 个答案:

答案 0 :(得分:0)

mp.reset();需要在代码中实现。

答案 1 :(得分:0)

你可以使用r.java中存在的歌曲的最终int值来实现它 注意: 检查R.java文件中所有歌曲的最终int值。

final int[] mid = new int[] {0x7f040000,0x7f040001,0x7f040002,0x7f040003,0x7f040004,0x7f040005};
mainListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
s=MediaPlayer.create(SimpleListViewActivity.this, mid[position]);
s.start();
}
});