Android MediaPlayer

MediaPlayer 类是媒体框架最重要的组成部分之一。此类的对象能够获取、解码以及播放音频和视频,而且只需极少量设置。它支持多种不同的媒体源,例如:
• 本地资源
• 内部 URI,例如您可能从内容解析器那获取的 URI
• 外部网址(流式传输)
MediaPlayer简单使用
1.实例化MediaPlayer类
2.设置数据源
如果使用 MediaPlayer 流式传输基于网络的内容,则必须请求网络访问权限
3.开始播放
在调用start()方法之前,程序会调用prepare()方法或prepareAsync()方法解析,prepare()为同步操作,一般用于解析较小的文件,prepareAsync()为异步操作,一般用于解析较大的文件。
使用create()方法创建 MediaPlayer对象不需要调用prepare()方法,直接调用start()方法。

java 复制代码
MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);
mediaPlayer.start(); 

4.停止播放
调用stop()方法停止播放,之后调用release()方法将MediaPlayer对象占用资源释放。

java 复制代码
 public void onClick(View view) {
        CharSequence text = btn_opt.getText();
        if (TextUtils.equals(text,"开始")){
            btn_opt.setText("结束");
            mediaPlayer = new MediaPlayer();
            //设置准备监听   准备完成回调onPrepared方法
            mediaPlayer.setOnPreparedListener(this);
            //设置完成监听
            mediaPlayer.setOnCompletionListener(this);
            try {
                //指定视频源
                mediaPlayer.setDataSource(new File(getExternalFilesDir(""),"b.mp4").getAbsolutePath());
            } catch (IOException e) {
                e.printStackTrace();
            }
            mediaPlayer.setSurface(new Surface(textureView.getSurfaceTexture()));//设置可视化窗口
            mediaPlayer.prepareAsync();//异步准备
        }else {
            btn_opt.setText("开始");
            mediaPlayer.stop();
            mediaPlayer.release();
        }
    }

    @Override
    public void onPrepared(MediaPlayer mp) {
        mediaPlayer.start();
    }

    @Override
    public void onCompletion(MediaPlayer mp) {
        btn_opt.setText("开始");
        mediaPlayer.release();
    }

MediaPlayer状态图

MediaPlayer详细请参考
MediaPlayer 概览 | Android media | Android Developers (gonglchuangl.net)
MediaPlayer | Android Developers (gonglchuangl.net)

相关推荐
SRC_BLUE_1727 分钟前
SQLI LABS | Less-39 GET-Stacked Query Injection-Intiger Based
android·网络安全·adb·less
无尽的大道4 小时前
Android打包流程图
android
镭封5 小时前
android studio 配置过程
android·ide·android studio
夜雨星辰4875 小时前
Android Studio 学习——整体框架和概念
android·学习·android studio
邹阿涛涛涛涛涛涛5 小时前
月之暗面招 Android 开发,大家快来投简历呀
android·人工智能·aigc
IAM四十二6 小时前
Jetpack Compose State 你用对了吗?
android·android jetpack·composer
奶茶喵喵叫6 小时前
Android开发中的隐藏控件技巧
android
Winston Wood8 小时前
Android中Activity启动的模式
android
众乐认证8 小时前
Android Auto 不再用于旧手机
android·google·智能手机·android auto
三杯温开水8 小时前
新的服务器Centos7.6 安卓基础的环境配置(新服务器可直接粘贴使用配置)
android·运维·服务器