Android Mp3播放器,支持Service后台播放

本文介绍了作者作为新手制作Android本地音乐播放器的过程,包括获取音频文件、展示列表、实现播放界面、使用Service进行后台播放。详细讲述了各个关键步骤,如获取音频信息、ListView适配、播放界面的实现以及后台Service的使用。
摘要由CSDN通过智能技术生成

大家好,作为小白,这是我第一篇文章,也是我的一个学习记录。废话就不多说了,开始进入正题吧。
这篇文章是我做Mp3播放器的一个过程,首先整理一下思路,我们做播放器会需要什么东西呢?
一:获取本地的音频文件。并且保存到一个List里面方便我们来读取。
二:需要一个界面来展示出我们所获取到的音频文件。
三:播放界面,需要有播放,下一首,等一系列操作。
四:Service,我们需要运用Service来达到后台播放目的,当然使用它的前提就是我们能够先了解到Service的基本使用方法,这里我就不多做说明了.等以后我会写一点点关于这个的东西。
好了,大概的流程就是这样,下面我们来用代码实现。


一:获取本地音频文件

public class Audio {
   
  private String mTitle,
                mTitleKey,//标题
                mArtist,//艺术家名
                mArtistKey,
                mComposer,
                mAlbum,
                mAlbumKey,
                mDisplayName,//歌曲名
                mMimeType,
                mPath;//路径

        private int mId,
                mArtistId,
                mAlbumId,
                mYear,
                mTrack;

        private int mDuration = 0,//时长
                mSize = 0;//大小

        private boolean isRingtone = false,
                isPodcast = false,
                isAlarm = false,
                isMusic = false,
                isNotification = false;

        public Audio(Bundle bundle) {
            mId = bundle.getInt(MediaStore.Audio.Media._ID);
            mTitle = bundle.getString(MediaStore.Audio.Media.TITLE);
            mTitleKey = bundle.getString(MediaStore.Audio.Media.TITLE_KEY);
            mArtist = bundle.getString(MediaStore.Audio.Media.ARTIST);
            mArtistKey = bundle.getString(MediaStore.Audio.Media.ARTIST_KEY);
            mComposer = bundle.getString(MediaStore.Audio.Media.COMPOSER);
            mAlbum = bundle.getString(MediaStore.Audio.Media.ALBUM);
            mAlbumKey = bundle.getString(MediaStore.Audio.Media.ALBUM_KEY);
            mDisplayName = bundle.getString(MediaStore.Audio.Media.DISPLAY_NAME);
            mYear = bundle.getInt(MediaStore.Audio.Media.YEAR);
            mMimeType = bundle.getString(MediaStore.Audio.Media.MIME_TYPE);
            mPath = bundle.getString(MediaStore.Audio.Media.DATA);

            mArtistId = bundle.getInt(MediaStore.Audio.Media.ARTIST_ID);
            mAlbumId = bundle.getInt(MediaStore.Audio.Media.ALBUM_ID);
            mTrack = bundle.getInt(MediaStore.Audio.Media.TRACK);
            mDuration = bundle.getInt(MediaStore.Audio.Media.DURATION);
            mSize = bundle.getInt(MediaStore.Audio.Media.SIZE);
            isRingtone = bundle.getInt(MediaStore.Audio.Media.IS_RINGTONE) == 1;
            isPodcast = bundle.getInt(MediaStore.Audio.Media.IS_PODCAST) == 1;
            isAlarm = bundle.getInt(MediaStore.Audio.Media.IS_ALARM) == 1;
            isMusic = bundle.getInt(MediaStore.Audio.Media.IS_MUSIC) == 1;
            isNotification = bundle.getInt(MediaStore.Audio.Media.IS_NOTIFICATION) == 1;

        }

        public int getId() {
            return mId;
        }

        public String getMimeType () {
            return mMimeType;
        }

        public int getDuration () {
            return mDuration;
        }

        public int getSize () {
            return mSize;
        }

        public boolean isRingtone () {
            return isRingtone;
        }

        public boolean isPodcast () {
            return isPodcast;
        }

        public boolean isAlarm () {
            return isAlarm;
        }

        public boolean isMusic () {
            return isMusic;
        }

        public boolean isNotification () {
            return isNotification;
        }

        public String getTitle () {
            return mTitle;
        }

        public String getTitleKey () {
            return mTitleKey;
        }

        public String getArtist () {
            return mArtist;
        }

        public int getArtistId () {
            return mArtistId;
        }

        public String getArtistKey () {
            return mArtistKey;
        }

        public String getComposer () {
            return mComposer;
        }

        public String getAlbum () {
            return mAlbum;
        }

        public int getAlbumId () {
            return mAlbumId;
        }

        public String getAlbumKey () {
            return mAlbumKey;
        }

        public String getDisplayName () {
            return mDisplayName;
        }

        public int getYear () {
            return mYear;
        }

        public int getTrack () {
            return mTrack;
        }

        public String getPath () {
            return mPath;
        }

    }

这里我们写了一个Audio的音频文件类,它所有的属性有mTitle,
mTitleKey,
mArtist,
mArtistKey,
mComposer,
mAlbum,
mAlbumKey,
mDisplayName,
mMimeType,
mPath;
我们从名字中就可以看到其作用,歌曲标题,艺术家名等.
public Audio(Bundle bundle) 这个构造的函数的作用呢,也就相当于我们取到本地音频的一系列值,然后存储到这个类中来。
然后就是实现这个类的属性的get方法,从类中获取到这些属性。

接下来,我们需要去浏览本地文件,选出音频文件进行保存:

public class MediaUtils {
    public static final String[] AUDIO_KEYS = new String[]{
            MediaStore.Audio.Media._ID,
            MediaStore.Audio.Media.TITLE,
            MediaStore.Audio.Media.TITLE_KEY,
            MediaStore.Audio.Media.ARTIST,
            MediaStore.Audio.Media.ARTIST_ID,
            MediaStore.Audio.Media.ARTIST_KEY,
            MediaStore.Audio.Media.COMPOSER,
            MediaStore.Audio.Media.ALBUM,
            MediaStore.Audio.Media.ALBUM_ID,
            MediaStore.Audio.Media
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值