首页 > 解决方案 > 如何在 Android Studio 的媒体播放器中播放下一首歌曲?

问题描述

在我的 Android 应用程序中,我想播放一些歌曲。在我的代码的帮助下,我可以通过单独单击来播放歌曲。但是一旦歌曲完成使用媒体播放器,我就无法连续播放下一首歌曲。而且在这里我也不能制作随机歌曲。这里只能循环播放同一首歌曲。但我的要求是在第一首播放的歌曲完成后自动播放下一首歌曲。这是我的代码

XML 代码

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:fillViewport="true">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:layout_marginTop="65dp"
            android:padding="10dp"
            android:layout_marginRight="5dp"
            android:layout_marginLeft="5dp">
            <ListView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_centerHorizontal="true"
                android:id="@+id/listView"/>
        </LinearLayout>
    </ScrollView>
    <include
        layout="@layout/app_bar_homepage"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_homepage"
        app:menu="@menu/activity_homepage_drawer" />
</android.support.v4.widget.DrawerLayout>

Java 代码:

package com.musicapp;
import android.content.Intent;
import android.graphics.Color;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.constraint.Group;
import android.support.v4.view.GravityCompat;
import android.support.v7.app.ActionBarDrawerToggle;
import android.view.MenuItem;
import android.support.design.widget.NavigationView;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class MusicActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {
    ListView listView;
    List<String> list;
    ListAdapter adapter;
    MediaPlayer mediaPlayer;
    private int currentSongIndex = 0;
    View previousSelectedItem;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_music);
        listView = findViewById(R.id.listView);
        list=new ArrayList<>();
        Field[] fields = R.raw.class.getFields();
        for(int i=0;i<fields.length;i++){
            list.add(fields[i].getName());
        }
        adapter=new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,list);
        listView.setAdapter(adapter);
        listView.setPadding(0,20,0,0);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                if(mediaPlayer!=null){
                    mediaPlayer.release();
                }
                int resID = getResources().getIdentifier(list.get(i),"raw",getPackageName());
                mediaPlayer = MediaPlayer.create(MusicActivity.this,resID);
                mediaPlayer.start();
                if (previousSelectedItem!=null) {
                    previousSelectedItem.setBackgroundColor(Color.WHITE);
                }
                previousSelectedItem=view;
                view.setBackgroundResource(R.drawable.bg_with_color);
            }
        });
}

有人可以帮助我吗?

标签: javaxmlandroid-studio

解决方案


推荐阅读