android - 如何在单击播放按钮时播放特定的音频歌曲

标签 android android-audiomanager

我正在编写一个音乐应用程序,我从原始文件夹中获取歌曲,并在可用歌曲列表中显示一次用户点击任何一首歌曲,调用另一个 Activity ,即播放 Activity ,我在这里提供另一个选项,例如:播放按钮[播放该特定歌曲]用户有通过 MainActivity.java 中的列表选择。

问题:

每当我从列表中选择不同的歌曲后点击播放按钮,它总是播放我在 PlayActivity.java 中给出的最后一首歌曲,如您所见 gayatri.mp3 是最后一首歌,所以它每次都播放这首,但我想播放用户选择的那首特定歌曲。

PlayActivity.java:

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_play);

        if(mMedia != null){
            mMedia.release(); 
        }

        Intent intent= getIntent();
        // final String MusicID = intent.getStringExtra("vMusicID");
        final String MusicName = intent.getStringExtra("vMusicName");

        final TextView txtView = (TextView)findViewById(R.id.textView1);
        txtView.setText(MusicName);

        mMedia = MediaPlayer.create(this, R.raw.guitar);
        mMedia = MediaPlayer.create(this, R.raw.helo);
        mMedia = MediaPlayer.create(this, R.raw.msg);
        mMedia = MediaPlayer.create(this, R.raw.roja);
        mMedia = MediaPlayer.create(this, R.raw.gayatri);


        final Button btn1 = (Button) findViewById(R.id.button1); // Play

        // Start
        btn1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                txtView.setText(MusicName);
                mMedia.start();
                startPlayProgressUpdater();

            }
        });

MainActivity.java:

 MyArrList = new ArrayList<HashMap<String, String>>();
        HashMap<String, String> map;

        /*** Rows 1 ***/
        map = new HashMap<String, String>();
        map.put("MusicID", "1");
        map.put("MusicName", "Gayatri");
        map.put("MusicPath", "gayatri.mp3");
        MyArrList.add(map);

        /*** Rows 2 ***/
        map = new HashMap<String, String>();
        map.put("MusicID", "2");
        map.put("MusicName", "Guitar");
        map.put("MusicPath", "guitar.mp3");
        MyArrList.add(map);

        /*** Rows 3 ***/
        map = new HashMap<String, String>();
        map.put("MusicID", "3");
        map.put("MusicName", "Helo");
        map.put("MusicPath", "helo.mp3");
        MyArrList.add(map);

        /*** Rows 4 ***/
        map = new HashMap<String, String>();
        map.put("MusicID", "4");
        map.put("MusicName", "Msg");
        map.put("MusicPath", "msg.mp3");
        MyArrList.add(map);

        /*** Rows 5 ***/
        map = new HashMap<String, String>();
        map.put("MusicID", "5");
        map.put("MusicName", "Roja");
        map.put("MusicPath", "roja.mp3");
        MyArrList.add(map);

        //  listView1
        final ListView lstView1 = (ListView)findViewById(R.id.listView1);
        lstView1.setAdapter(new ImageAdapter(this));

最佳答案

更新:

这里你需要你歌曲的资源id,使用下面的代码获取ID,

int roja = this.getResources().getIdentifier("roja", "raw", this.getPackageName()); 
int msg= this.getResources().getIdentifier("msg", "raw", this.getPackageName()); 
int helo= this.getResources().getIdentifier("helo", "raw", this.getPackageName()); 
int gayatri= this.getResources().getIdentifier("gayatri", "raw", this.getPackageName()); 

int[] songIds= {roja,msg,helo,gayatri};

如果您正在使用 List 那么您也可能会得到 Index, 在这里,您只需将 index 传递给 Array songIds

mMedia = MediaPlayer.create(this,songIds[0]);
mMedia.start();

关于android - 如何在单击播放按钮时播放特定的音频歌曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16784939/

相关文章:

java - R.java 包含错误的资源指针

android - 在 AMD 处理器上运行 Android Studio 模拟器

android - 如何关闭来电的媒体服务?我的 AudioManager 不工作

android - 如何将耳机中的音频静音但让它以编程方式在扬声器上播放?

android - fragment 着色器似乎不准确地 floor()

android - 带 fragment 的底部导航栏

Android 防止 DialogFragment 打开两次

android - 如何检测用户何时在 android 设备上插入耳机? (与 ACTION_AUDIO_BECOMING_NOISY 相反)

android - 铃声模式更改监听器广播接收器?

android - 如何在当前应用程序上获得audioFocus?