Android ExoPlayer 播放网络音频的完整指南

在移动应用开发中,音频播放是一个常见的需求。Google 的 ExoPlayer 是一种灵活且强大的音频(和视频)播放器库,适合在 Android 应用中使用。本文将为您介绍如何使用 ExoPlayer 播放网络音频。

ExoPlayer 简介

ExoPlayer 是 Google 推出的开源项目,提供了一种在 Android 上流畅播放音频和视频的解决方案。其主要优点包括:

  • 可扩展性:允许开发者自定义功能。
  • 支持多种音频格式:如 MP3、AAC、Vorbis 等。
  • 自适应流媒体:适应网络状况,提升用户体验。
  • 支持 DRM 内容:可用于保护版权音频。

引入依赖

在使用 ExoPlayer 之前,您需要在 build.gradle 文件中添加相应的依赖项:

implementation 'com.google.android.exoplayer:exoplayer:2.X.X'

请确保替换 2.X.X 为最新版本号。

基本实现步骤

1. 添加权限

要播放网络音频,您需要在 AndroidManifest.xml 文件中添加网络权限:

<uses-permission android:name="android.permission.INTERNET"/>

2. 设置布局

在您的布局文件中创建一个播放控制器(如播放按钮、暂停按钮等):

<LinearLayout
    xmlns:android="
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/play_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Play"/>

    <Button
        android:id="@+id/pause_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Pause"/>
</LinearLayout>

3. 编写播放逻辑

在您的 Activity 中,您可以使用以下代码来初始化 ExoPlayer 并播放音频:

import android.net.Uri;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.SimpleExoPlayer;

public class MainActivity extends AppCompatActivity {
    private SimpleExoPlayer player;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button playButton = findViewById(R.id.play_button);
        Button pauseButton = findViewById(R.id.pause_button);

        // 创建 ExoPlayer 实例
        player = new SimpleExoPlayer.Builder(this).build();
        
        // 设置音频源
        Uri uri = Uri.parse("
        MediaItem mediaItem = MediaItem.fromUri(uri);
        player.setMediaItem(mediaItem);

        // 播放按钮点击事件
        playButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                player.prepare();
                player.play();
            }
        });

        // 暂停按钮点击事件
        pauseButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                player.pause();
            }
        });
    }

    @Override
    protected void onStop() {
        super.onStop();
        player.release();
    }
}

4. 说明

在以上代码中,SimpleExoPlayer 被创建并配置为播放指定 URL 的音频。用户可以通过点击按钮来控制播放与暂停。在 onStop() 方法中,确保释放播放器资源以避免内存泄漏。

关系图示例

使用以下 Mermaid 语法描述 ExoPlayer 的基本组件关系:

erDiagram
    PLAYER {
        string id PK
        string name
    }
    MEDIA_ITEM {
        string uri PK
        string type
    }
    PLAYER ||--o{ MEDIA_ITEM : plays

总结

通过以上步骤,您应该能够在 Android 应用中使用 ExoPlayer 播放网络音频。ExoPlayer 的强大和灵活将使您的应用对用户更加友好。此外,它的功能还远不止于此,您可以探索更多关于 ExoPlayer 的高级特性,例如自适应流媒体、DRM 支持等。希望本文能为您的开发工作提供帮助!