MediaPlayer播放音频

本文详细介绍了如何在Android应用中使用MediaPlayer播放Raw和Asserts音频文件,包括资源的加载、播放控制及错误处理。同时对比了MediaPlayer与Ringtone在特定场景下的优劣,为开发者提供全面的音频播放解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MediaPlayer

1.读取Raw音频文件

release()可以释放播放器占用的资源,一旦确定不再使用播放器时应当尽早调用它释放资源。

reset()可以使播放器从Error状态中恢复过来,重新会到Idle状态。

setOnSeekCompleteListener(OnSeekCompleteListener)设置监听器来处理的。

MediaPlayer实例是由create方法创建的,那么第一次启动播放前不需要再调用prepare()了,因为create方法里已经调用过了。否则会报错

mediaPlayer = MediaPlayer.create(MyApplication.getContext(), R.raw.beep);
mediaPlayer.start();
mediaPlayer.setVolume(1.0f, 1.0f);
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mediaPlayer) {
                    isRing = false;
                }
            });

2.读取Asserts音频文件

private void openAssetMusics() {
        //打开Asset目录
        assetManager = getAssets();
        mediaPlayer = new MediaPlayer();
        try {
            AssetFileDescriptor assetFileDescriptor = assetManager.openFd("beep.mp3");
            mediaPlayer.reset();
            //设置媒体播放器的数据资源
            mediaPlayer.setDataSource(assetFileDescriptor.getFileDescriptor(), assetFileDescriptor.getStartOffset(), assetFileDescriptor.getLength());
            mediaPlayer.prepare();
            mediaPlayer.start();
        } catch (IOException e) {
            e.printStackTrace();
            Log.d("GsonUtils", "IOException" + e.toString());
        }
    }

Ringtone

本人在2.3.7手机上用MediaPlayer有时候就不能播放了,只好用Ringtone了,原因还在分析中

Uri notification = Uri.parse("android.resource://"+ MyApplication.getContext().getPackageName()+"/"+R.raw.beep);
ring = RingtoneManager.getRingtone(MyApplication.getContext(), notification);
playing = ring.isPlaying();
ring.play();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值