Android mp3 плеер для воспроизведения списка песен - PullRequest
3 голосов
/ 29 июня 2010

Мне нужен пример кода mp3-плеера в Android для воспроизведения более одного файла.т.е. песню следует воспроизводить одну за другой из определенной папки в нашей системе.

Может ли кто-нибудь опубликовать пример кода?

Ответы [ 6 ]

2 голосов
/ 11 марта 2015

Полный mp3-плеер, готовый для интеграции в ваш проект: github.com / avafab / URLMediaPlayer

1 голос
/ 20 июня 2015

простой функциональный медиаплеер с большинством функций,

класс представляет песню

 private class SongDetails {
        String songTitle = "";
        String songArtist = "";
        //song location on the device
        String songData = "";
 }

функция, которая возвращает все медиафайлы, помеченные как mp3, и добавляет их в массив

private void getAllSongs()
    {
       //creating selection for the database
        String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";
        final String[] projection = new String[] {
                MediaStore.Audio.Media.DISPLAY_NAME,
                MediaStore.Audio.Media.ARTIST,
                MediaStore.Audio.Media.DATA};

        //creating sort by for database
        final String sortOrder = MediaStore.Audio.AudioColumns.TITLE
                + " COLLATE LOCALIZED ASC";

        //stating pointer
        Cursor cursor = null;

        try {
            //the table for query
            Uri uri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
            // query the db
            cursor = getBaseContext().getContentResolver().query(uri,
                    projection, selection, null, sortOrder);
            if (cursor != null) {

                //create array for incoming songs
                songs = new ArrayList<SongDetails>(cursor.getCount());

                //go to the first row
                cursor.moveToFirst();

                SongDetails details;

                while (!cursor.isAfterLast()) {
                    //collecting song information and store in array,
                    //moving to the next row
                    details = new SongDetails();
                    details.songTitle = cursor.getString(0);
                    details.songArtist = cursor.getString(1);
                    details.songData = cursor.getString(2);
                    songs.add(details);
                    cursor.moveToNext();

                }
            }
        } catch (Exception ex) {

        } finally {
            if (cursor != null) {
                cursor.close();
            }
        }
    }

общий интерфейс между игроком и действием

public interface OnPlayerEventListener {
    void onPlayerComplete();
    void onPlayerStart(String Title,int songDuration,int songPosition);
}

класс представляет медиаплеер

public class simplePlayer
{
    OnPlayerEventListener mListener;
    Activity mActivity;

    //give access to the gui
    public ArrayList<songDetails> songs = null;
    public boolean isPaused = false;
    public int currentPosition = 0;
    public int currentDuration = 0;

    //single instance
    public static MediaPlayer player;

   //getting gui player interface
   public  simplePlayer(Activity ma)
   {
       mActivity = ma;
       mListener = (OnPlayerEventListener) mActivity;
   }

    //initialize the player
    public void init(ArrayList<songDetails>_songs)
    {
        songs = _songs;
        currentPosition = 0;


        if(player == null)
        {
            player = new MediaPlayer();
            player.setAudioStreamType(AudioManager.STREAM_MUSIC);
            player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mp) {

                    player.stop();
                    player.reset();

                    nextSong();
                    mListener.onPlayerSongComplete();

                }
            });
        }
    }

    //stop the current song
    public void stop()
    {
        if(player != null)
        {
            if(player.isPlaying())
                //stop music
                player.stop();

            //reset pointer
            player.reset();
        }
    }

    //pause the current song
    public void pause()
    {
        if(!isPaused && player != null)
        {
            player.pause();
            isPaused = true;
        }
    }

    //playing the current song
    public void play()
    {
        if(player != null)
        {
            if(!isPaused && !player.isPlaying())
            {
                if(songs != null)
                {
                    if(songs.size() > 0)
                    {
                        try {
                            //getting file path from data
                            Uri u = Uri.fromFile(new File(songs.get(currentPosition).songData));

                            //set player file
                            player.setDataSource(mActivity,u);
                            //loading the file
                            player.prepare();
                            //getting song total time in milliseconds
                            currentDuration = player.getDuration();

                            //start playing music!
                            player.start();
                            mListener.onPlayerSongStart("Now Playing: "
                                    + songs.get(currentPosition).songArtist
                                    + " - "+ songs.get(currentPosition).songTitle
                                    ,currentDuration,currentPosition);
                        }
                        catch (Exception ex)
                        {
                            ex.printStackTrace();
                        }
                    }
                }
                else
                {
                    //continue playing, reset the flag
                    player.start();
                    isPaused = false;
                }
            }
        }
    }

    //playing the next song in the array
    public  void nextSong()
    {
        if(player != null)
        {
            if(isPaused)
                isPaused = false;

            if(player.isPlaying())
                player.stop();

            player.reset();

            if((currentPosition + 1) == songs.size())
                currentPosition = 0;
            else
                currentPosition  = currentPosition + 1;

            play();
        }
    }

    //playing the previous song in the array
    public void previousSong()
    {
        if(player != null)
        {
            if(isPaused)
                isPaused = false;

            if(player.isPlaying())
                player.stop();

            player.reset();

            if(currentPosition - 1 < 0)
                currentPosition = songs.size();
            else
                currentPosition = currentPosition -1;

            play();
        }
    }

    //getting new position for playing by the gui seek bar
    public void setSeekPosition(int msec)
    {
        if(player != null)
            player.seekTo(msec);
    }

    //getting the current duration of music
    public int getSeekPosition()
    {
        if(player != null)
            return  player.getDuration();
        else
            return -1;
    }
}

класс представляет основную деятельность

public class MainActivity extends ActionBarActivity 
implements OnPlayerEventListener {

simplePlayer player;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //getting all songs in the device
    getAllSongs();

    if (player == null) {
        //create new instance and send the listener
        player = new simplePlayer(this);
        //initialize the simplePlayer
        player.init(songs);
        //start playing the first song
        player.play();

        seekBar.setMax(player.currentDuration);
    }
}

@Override
public void onPlayerSongComplete() {
 //need to be implement!
}

@Override
public void onPlayerSongStart(String Title, int songDuration, int songPosition) {
    this.setTitle(Title);
    seekBar.setMax(songDuration);
    seekBar.setProgress(0);
}
}

удачи!

0 голосов
/ 21 апреля 2013

Это очень хороший пример простого в понимании mp3-плеера: https://github.com/saquibhafiz/MP3Player

Или, если вы предпочитаете туториал:

http://www.androidhive.info/2012/03/android-building-audio-player-tutorial/ http://www.hrupin.com/2010/12/simple-android-mp3-media-player
0 голосов
/ 02 мая 2012

В какой-то момент вам придется столкнуться с этим, когда дело доходит до воспроизведения музыки на Android.

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

0 голосов
/ 29 июня 2010

Вы также можете проверить исходный код музыкального проигрывателя, который поставляется с Android. https://android.googlesource.com/platform/packages/apps/Music/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...