Android开发在线音频播放器-第一章:AudioPlayerManager详解

作者:袖梨 2026-05-27
掌握ExoPlayer核心功能,实现高效音频播放管理。本文将详细介绍AudioPlayerManager工具类的完整实现过程,助您快速构建稳定播放功能。 ExoPlayer作为谷歌官方推荐的多媒体框架,支持变速播放等高级特性。通过添加以下依赖即可快速集成: implementation 'com.google.android.exoplayer:exoplayer:2.17.1' //exo播放器 AudioPlayerManager封装了音频焦点管理、播放控制等核心功能,包含以下特性: /** * 音频播放 */ public class AudioPlayerManager { private static final String TAG = "AudioPlayerManager"; private static AudioPlayerManager instance; private Context context; private SimpleExoPlayer mediaPlayer; private DataSource.Factory dataSourceFactory; private AudioManager manager; private AudioPlayerManager(Context context) { this.context = context; createPlayer(); requestAudioFocus(); } public static AudioPlayerManager getInstance(Context context) { synchronized (AudioPlayerManager.class) { if (instance == null) { instance = new AudioPlayerManager(context); } } return instance; } public void requestAudioFocus() { manager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); // manager.requestAudioFocus(afChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN); } public ExoPlayer getMediaPlayer() { return mediaPlayer; } public void setAudioFile2(String filepath) { try { //这是一个代表将要被播放的媒体的MediaSource MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(MediaItem.fromUri(filepath)); mediaPlayer.prepare(mediaSource); mediaPlayer.setPlayWhenReady(false); } catch (Exception e) { e.printStackTrace(); } } AudioManager.OnAudioFocusChangeListener afChangeListener = new AudioManager.OnAudioFocusChangeListener() { @Override public void onAudioFocusChange(int focusChange) { switch (focusChange){ case AudioManager.AUDIOFOCUS_LOSS: //长时间丢失焦点,当其他应用申请的焦点为AUDIOFOCUS_GAIN时, //会触发此回调事件,例如播放QQ音乐,网易云音乐等 //通常需要暂停音乐播放,若没有暂停播放就会出现和其他音乐同时输出声音 //释放焦点,该方法可根据需要来决定是否调用 //若焦点释放掉之后,将不会再自动获得 manager.abandonAudioFocus(afChangeListener); PlayControlTools.setACTION_PAUSE(); //控制播放暂停 break; case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: //短暂性丢失焦点,当其他应用申请AUDIOFOCUS_GAIN_TRANSIENT或AUDIOFOCUS_

相关文章

精彩推荐