android 语音播放

本文介绍了在Android上使用MediaPlayer进行语音播放的流程,强调了不在主线程中使用prepare以及释放资源的重要性。还讨论了如何处理AUDIO_BECOMING_NOISY事件,如耳机拔出时暂停播放。此外,详细解释了Audio Focus的概念,用于在多应用环境中协调扬声器使用权,以及在失去焦点时的应对策略。

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

 

android 语音播放

 

MediaPlayer可以播放本地或者网络的音频,流程如下:

Uri myUri = ....; // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();

注意,mediaPlayer的prepare最好不要在主线程中使用,以免发生卡顿。如果要在主线程中用,应该使用prepareAsync,并设置回调接口。 
音频播放完,记得要释放资源:

 

mediaPlayer.release();
mediaPlayer = null;

 

当手机休眠的时候,可能会停止诸如WiFi,CPU的一些模块。如果这个时候你的程序仍要在后台运行播放音乐,就需要放置一些功能诸如WiFi休眠。

Wake Lock 的作用就是在手机休眠时,通知手机你的程序仍然在使用某些模块,不要试图去关闭它们。

当初始化时,调用 mMediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); 可以保持CPU不被关闭。然而,这里仅仅保证了CPU的运行。如果播放的是流媒体音乐,需要使用wifi,那么还要获取wifi loc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值