Android 简易的音乐播放器

本文介绍如何使用Android的MediaPlayer类创建简易音乐播放器。重点讲解从内存、存储卡及网络加载音频的方法,并演示如何控制播放状态及显示进度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android MediaPlayer实现简易的音乐播放器

MediaPlayer 这个类是音乐播放器的核心,借助这个类,实现了简易的音乐播放

主要用到的方法
mediaPlayer.start();(播放)
mediaPlayer.pause();(暂停)
mediaPlayer.stop();(停止)

音乐它可以来源于
1、内存,
2、存储卡,
3、网络

1、来源于内存的

需要在 res 目录下面建一个 raw 文件夹,用来存放需要播放的音乐

1、使用 MediaPlayer.create(this, R.raw.summer_love); 创建Mediaplayer对象
2、给Mediaplayer设置类型mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
中间设置下图标,进度条

3、最后 mediaPlayer.start();


    /**
     * 播放or暂停
     * @param view
     */
    public void isPlayOrPause(View view){
        final ImageButton ib_main_play = (ImageButton)view;
        //判断MediaPlay的状态
        if(mediaPlayer == null){    //1、为空,也就是第一次
            //1、内存中的音频文件
//          mediaPlayer = MediaPlayer.create(this, R.raw.summer_love);
            //设置类型
            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                    //播放
                    mediaPlayer.start();            
                    //改变图标
                    ib_main_play.setImageResource(android.R.drawable.ic_media_pause);
                    //获取音乐总时长
                    int duration = mediaPlayer.getDuration();
                    //设置seekBar总长
                    sb_main_music.setMax(duration);

                    //使进度条跟随随音乐长度
                    new MyThread().start();

        } else if(mediaPlayer.isPlaying()){     //2、正在播放?
            mediaPlayer.pause();
            ib_main_play.setImageResource(android.R.drawable.ic_media_play);
        } else {        //3、暂停
            mediaPlayer.start();
            ib_main_play.setImageResource(android.R.drawable.ic_media_pause);
        }
    }

2、内存卡、网络

方便测试,我把音乐放在了特定的文件夹里

这两种的 MediaPlayer 创建方式和在内存中的音乐数据不同
1、通过 new 一个 MediaPlayer 对象 ,
2、设置类型
3、设置路径(路径需要符合 “file://“(本地文件)/”http://”(网络)协议 )
4、准备((存储卡)mediaPlayer.prepare();/(网络)mediaPlayer.prepareAsync();)
5、监听是否准备完成
6、启动(播放)

//实例化MediaPlayer
            mediaPlayer = new MediaPlayer();
            //设置类型
            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

            try {
                //设置音频
                //内存卡
//              mediaPlayer.setDataSource(this,Uri.parse("file://mnt/sdcard/down.mp3"));
                //需要准备(内存卡)
//              mediaPlayer.prepare();
                //网络
                mediaPlayer.setDataSource(this,Uri.parse("http://192.168.0.101:8080/yasu.mp3"));
                //准备(网络)
                mediaPlayer.prepareAsync();

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            //准备完成监听
            mediaPlayer.setOnPreparedListener(new OnPreparedListener() {

                @Override
                public void onPrepared(MediaPlayer mp) {
                    // TODO Auto-generated method stub
                    //播放
                    mediaPlayer.start();            
                    //改变图标
                    ib_main_play.setImageResource(android.R.drawable.ic_media_pause);
                    //获取音乐总时长
                    int duration = mediaPlayer.getDuration();
                    //设置seekBar总长
                    sb_main_music.setMax(duration);

                    //使进度条随音乐长度
                    new MyThread().start();

                }
            });

最后别忘了添加权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值