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();
            }
        }
    }

     

     

  • 相关阅读:
    1.两数之和
    [Udemy] ES 7 and Elastic Stack
    [Udemy] ES 7 and Elastic Stack
    Common Linux Commands 日常工作常用Linux命令
    ELK 学习
    web 3d 技术预研及数据可视化技术
    AWS Cloud Practioner 官方课程笔记
    怎么用 pytorch 查看 GPU 信息
    ECG 项目预研
    怎么查看keras 或者 tensorflow 正在使用的GPU
  • 原文地址:https://www.cnblogs.com/gongcb/p/2494518.html
Copyright © 2011-2022 走看看