MediaPlayer循环播放音频

本文介绍了一个简单的音视频通话中声音播放控制实现方法。通过创建MediaPlayer实例并设置循环播放及完成监听器,确保了通话提示音能够连续播放,同时提供了停止播放的方法释放资源。
private MediaPlayer mediaPlayer;
public void startVoice() {
    if (mediaPlayer != null && mediaPlayer.isPlaying()) {return;}
    mediaPlayer = MediaPlayer.create(BaseInviteCallActivity.this, R.raw.videocalll);
    mediaPlayer.start();
    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            if (mediaPlayer == null) {return;}
            mediaPlayer.start();
            mediaPlayer.setLooping(true);
        }
    });
}

public void stopVoice() {
    if (mediaPlayer != null) {
        mediaPlayer.stop();
        mediaPlayer.release(); //切记一定要release 
        mediaPlayer = null;
    }
}
### Android MediaPlayer 实现循环播放 在 Android 开发中,`MediaPlayer` 是一种常用的音频播放工具类。为了实现循环播放功能,可以通过设置 `setLooping(boolean)` 方法来启用或禁用循环模式[^1]。 以下是完整的代码示例: ```java import android.media.MediaPlayer; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private MediaPlayer mediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化 MediaPlayer 对象并加载资源 mediaPlayer = MediaPlayer.create(this, R.raw.sample_audio); // 设置循环播放 if (mediaPlayer != null) { mediaPlayer.setLooping(true); // 启用循环播放 } // 播放音频 if (!mediaPlayer.isPlaying()) { mediaPlayer.start(); } } @Override protected void onDestroy() { super.onDestroy(); // 释放资源以防内存泄漏 if (mediaPlayer != null) { mediaPlayer.release(); mediaPlayer = null; } } } ``` #### 关键点说明 - **`setLooping(boolean)`**: 此方法用于控制是否开启循环播放。如果参数为 `true`,则会在音频结束时自动重新开始播放;如果为 `false`,则只播放一次[^1]。 - **资源管理**: 使用完毕后务必调用 `release()` 方法释放媒体资源,以防止潜在的内存泄漏问题[^3]。 此外,还可以通过监听器机制捕获播放完成事件,并手动触发再次播放逻辑。这种方式适用于更复杂的场景,例如需要执行额外的操作后再继续播放。 ```java mediaPlayer.setOnCompletionListener(mp -> { // 手动启动下一轮播放 mediaPlayer.seekTo(0); // 返回到开头位置 mediaPlayer.start(); // 继续播放 }); ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张海龙(Jason Zhang)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值