在Android中使用MediaPlayer播放音频和视频

在播放音频中SoundPool是个很好用的类,但是SoundPool只能播放音频,且通常只用来播放较短的音频,这就需要另外的类来实现视频和长音频的播放,那就是MediaPlay

实现MediaPlay的基本步骤是

  1. 创建MediaPlay对象
  2. 调用setDataSource对象这是音频文件路径
  3. 调用prepare加载音频
  4. 调用start开始播放
  5. 调用pause暂停
  6. 调用stop停止播放

而MediaPlay也有其他方法

  • getCurrentPosition,获得当前播放位置
  • getDuration,获得播放时长
  • isPlay,判断是否处于播放状态
  • release,释放资源
  • reset,回到最初的状态
  • seekTo,设置播放位置
  • setVolume,设置音量
 private  MediaPlayer mediaPlayer=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mediaPlayer=new MediaPlayer();
        if(ContextCompat.checkSelfPermission(this,
                Manifest.permission.READ_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},1);
        }else{
            initMediaPlayer();
        }
        Button btPlayMp3= (Button) findViewById(R.id.btPlayMp3);
        btPlayMp3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(!mediaPlayer.isPlaying()){
                    mediaPlayer.start();
                }
            }
        });
        Button btPauseMp3= (Button) findViewById(R.id.btPauseMp3);
        btPauseMp3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(mediaPlayer.isPlaying()){
                    mediaPlayer.pause();
                }
            }
        });
        Button btStopMp3= (Button) findViewById(R.id.btStopMp3);
        btStopMp3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(mediaPlayer.isPlaying()){
                    mediaPlayer.stop();
                    try {
                        mediaPlayer.prepare();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
    }
    private void initMediaPlayer(){
        try {
            File file=new File(Environment.getExternalStorageDirectory()+"/music","honor.mp3");
            mediaPlayer.setDataSource(file.getPath());
            mediaPlayer.prepare();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if(requestCode==1){
            if(grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED){
                initMediaPlayer();
            }else{
                Toast.makeText(this,"未获得SD卡访问权限",Toast.LENGTH_LONG).show();
                finish();
            }
        }
    }
    @Override
    protected void onDestroy() {
        if(mediaPlayer!=null){
            mediaPlayer.stop();
            mediaPlayer.release();
            mediaPlayer=null;
        }
        super.onDestroy();
    }

粉丝福利, 免费领取C++音视频学习资料包+学习路线大纲、技术视频/代码,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,编解码,推拉流,srs)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓

相关推荐

  1. Android使用MediaPlayer播放音频视频

    2024-04-13 00:00:04       17 阅读
  2. Js使用ffmpeg视频合成音频背景音乐

    2024-04-13 00:00:04       46 阅读
  3. 音乐播放器Android服务的实现

    2024-04-13 00:00:04       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-13 00:00:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-13 00:00:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-13 00:00:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-13 00:00:04       18 阅读

热门阅读

  1. 华为校招机试 - 网络保卫战(20240410)

    2024-04-13 00:00:04       12 阅读
  2. 两个数组的交集

    2024-04-13 00:00:04       15 阅读
  3. c#写的代码如何防止被反编译

    2024-04-13 00:00:04       17 阅读
  4. centos7的防火墙

    2024-04-13 00:00:04       13 阅读
  5. 获取cookie的方式

    2024-04-13 00:00:04       14 阅读
  6. LeetCode 27.移除元素

    2024-04-13 00:00:04       12 阅读
  7. Linux系统优化

    2024-04-13 00:00:04       13 阅读
  8. 个人博客项目笔记_04

    2024-04-13 00:00:04       13 阅读
  9. Object.assign详解

    2024-04-13 00:00:04       13 阅读