zoukankan      html  css  js  c++  java
  • Android进阶篇MediaPlayer

    Android系统提供了一个专门进行Media处理的接口,该接口就是MediaPlayer。

    要播放相关的音乐文件,首先我们要在res文件下创建raw文件,将相关的资源文件放在该目录下。

    第一步:

    初始化MediaPlayer

    mPlayer = MediaPlayer.create(this, R.raw.bubian);

    第二步:

                try {
                    if(mPlayer != null){
                        mPlayer.stop();
                    }
                    mPlayer.prepare();
                    mPlayer.start();
                } catch (Exception e) {
                    // TODO: handle exception
                    e.printStackTrace();
                }

    第三步:

    音乐暂停:

                try {
                    if(mPlayer != null){
                        mPlayer.stop();
                    }
                } catch (Exception e) {
                    // TODO: handle exception
                    e.printStackTrace();
                }

    当你要启动一个SeekBar进行展示音乐播放进度的时候,进行如下处理:

            seekBar.setMax(mPlayer.getDuration());
            timer = new Timer();
            TimerTask task = new TimerTask() {
                
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                        seekBar.setProgress(mPlayer.getCurrentPosition());
                }
            };
            timer.schedule(task, 0, 10);  

    示例代码如下:

    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            mPlayer = MediaPlayer.create(this, R.raw.bubian);
            
            button = (Button) findViewById(R.id.button1);
            button2 = (Button) findViewById(R.id.button2);
            seekBar = (SeekBar) findViewById(R.id.seekbar1);
            
            button2.setOnClickListener(this);
            button.setOnClickListener(this);
            seekBar.setOnSeekBarChangeListener(this);
            
            seekBar.setMax(mPlayer.getDuration());
            timer = new Timer();
            TimerTask task = new TimerTask() {
                
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                        seekBar.setProgress(mPlayer.getCurrentPosition());
                }
            };
            timer.schedule(task, 0, 10);  
        }
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            // TODO Auto-generated method stub
            if(keyCode == KeyEvent.KEYCODE_BACK){
                mPlayer.stop();
            }
            return super.onKeyDown(keyCode, event);
        }
        
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            switch (v.getId()) {
            case R.id.button1:
                try {
                    if(mPlayer != null){
                        mPlayer.stop();
                    }
                    mPlayer.prepare();
                    mPlayer.start();
                } catch (Exception e) {
                    // TODO: handle exception
                    e.printStackTrace();
                }
                break;
            case R.id.button2:
                try {
                    if(mPlayer != null){
                        mPlayer.stop();
                    }
                } catch (Exception e) {
                    // TODO: handle exception
                    e.printStackTrace();
                }
                break;
                
                
            default:
                break;
            }
        }
        @Override
        public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
            // TODO Auto-generated method stub
            
        }
        @Override
        public void onStartTrackingTouch(SeekBar arg0) {
            // TODO Auto-generated method stub
        }
        
        @Override
        public void onStopTrackingTouch(SeekBar arg0) {
            // TODO Auto-generated method stub
            mPlayer.seekTo(seekBar.getProgress());
        }

     MusicPlayer播放工具类:

    public class MusicPlayer {
        private static final String TAG = MusicPlayer.class.getSimpleName();
        
        private Context mContext;
        private MediaPlayer mediaPlayer;
        
        public MusicPlayer(Context context,String path){
            mContext = context;
            
            mediaPlayer = new MediaPlayer();
            try {
                mediaPlayer.reset();
                mediaPlayer.setDataSource(path);
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
        
        /**
         * 直接全部播放
         */
        public void play(){
            LogUtil.info(TAG, "------play-----");
            try {
                mediaPlayer.prepare();
                mediaPlayer.start();
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
        
        /**
         * 停止播放
         */
        public void stop(){
            LogUtil.info(TAG, "------stop-----");
            if(mediaPlayer != null){
                mediaPlayer.stop();
            }
        }
    }

     

     

  • 相关阅读:
    Canvas技术
    线段树树状数组小结
    html5 Canvas元素
    ccpc网络邀请赛部分
    2020杭电多校
    JavaFx 绘制图形和文本(笔记)
    P4094 [HEOI2016/TJOI2016]字符串(二分+多种数据结构)
    L3-021 神坛 (30分) (计算几何最小三角形面积)
    10月28日G、H、I题
    出栈序列的合法性 (25分) 之树状数组玄学做法
  • 原文地址:https://www.cnblogs.com/gongcb/p/2494518.html
Copyright © 2011-2022 走看看