Android 多媒体中的音乐播放器

MediaPlayer 对音频操作(核心)

1.Android-播放应用内音频文件
//实例化一个MediaPlayer

mediaPlayer = MediaPlayer.create(this, R.raw.cheng);

//R.raw.cheng为mp3音频文件路径
//设置类型

mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

现在AndroidManifest中添加权限

< uses-permission Android:name=”android.permission.READ_EXTERNAL_STORAGE” /> 

主界面我们设置一个SeekBar

 //设置进度条的拖动事件

        sb_main_seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
              int  progress=seekBar.getProgress();
              mediaPlayer.seekTo(progress);
            }
        });

//设置音源
try {

//播放内存卡中的音频文件
            mediaPlayer.setDataSource(this, Uri.parse("file://mnt/sdcard/Music/gui.mp3"));
//播放网络音乐
            //mediaPlayer.setDataSource(this, Uri.parse("http://192.168.43.240:8080/jike.mp3"));

2.Android-播放sd卡文件

            //准备一下(内存卡)
            //mediaPlayer.prepare();


                //准备(异步准备)
                mediaPlayer.prepareAsync();
            } catch (IOException e) {


                e.printStackTrace();
            }
 //设置准备完成的监听
            mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mediaPlayer) {

                    mediaPlayer.start();
                    imageButton.setImageResource(android.R.drawable.ic_media_pause);

                    //获取音乐的播放时长
                    int duration=mediaPlayer.getDuration();
                    //设置进度条的最大值为:音乐的播放时长
                    sb_main_seekbar.setMax(duration);

                    new MyThread().start();
                }
            });
        }
        else if(mediaPlayer.isPlaying()){
            mediaPlayer.pause();
            imageButton.setImageResource(android.R.drawable.ic_media_play);
        }
        else{
            mediaPlayer.start();
            imageButton.setImageResource(android.R.drawable.ic_media_pause);
        }
    }

写一个MyThread类,为了让进度条随着播放进度动起来

class MyThread extends Thread{
        @Override
        public void run() {
            super.run();
            while(sb_main_seekbar.getProgress()<=sb_main_seekbar.getMax()){
//获取当前音乐播放的位置
                int currentPosition=mediaPlayer.getCurrentPosition();
 //让进度条动起来
                sb_main_seekbar.setProgress(currentPosition);
            }
        }
    }

注意:播放网络音频文件需要提供一个局域网
我这里暂时用Tomcat替代服务器,找到apache文件夹中的bin文件夹,打开startup.bat,保证局域网打开,将要播放的mp3文件放到
apache/webapps/ROOT子文件夹中
运行cmd,输入命令“ipconfig”在“无线局域网适配器 无线网络连接:”后缀有IPv4地址,可以运行APP的时候输入网址“192.168.43.240:8080/jike.mp3”便会下载
当然,这里遇到过一个小问题,那就是cmd输入命令“ipconfig”,会报一个“‘ipconfig’不是内部或外部命令,也不是可运行的程序或批处理文件”的错误
是因为环境变量设置缺失的问题,只要在环境变量设置中的path编辑中,末尾加入一个分号(;),在加入内容“c:\windows\system32”,然后再运行cmd命令,便可查看ip地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值