Flutter音频播放插件easy_audio_player的使用

Flutter音频播放插件easy_audio_player的使用

flutter audio player package

音频播放器Flutter插件,提供易于使用的控件来播放远程或本地音频文件,支持所有平台

截图

特性

  • 使用简单的控件实现易于使用的音频播放器:
    • MinimalAudioPlayer: 仅用于播放音频,不包含播放和暂停按钮。
    • BasicAudioPlayer: 具有进度条和控制按钮的基本音频播放器。
    • FullAudioPlayer: 包含所有功能(进度条、控制按钮、播放列表、艺术图像)的音频播放器。

开始使用

1. 添加依赖项

pubspec.yaml文件中添加以下依赖项:

dependencies:
  flutter:
    sdk: flutter
    # 添加此行
  easy_audio_player: {latest_version}

2. 平台设置

Android 设置

AndroidManifest.xml文件中添加以下权限:

<!-- Just audio background PERMISSIONS -->
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>

<application>
  <!-- 修改MainActivity -->
  <activity android:name="com.ryanheise.audioservice.AudioServiceActivity">
    <!-- 添加 SERVICE元素 -->
    <service android:name="com.ryanheise.audioservice.AudioService">
      <intent-filter>
        <action android:name="android.media.browse.MediaBrowserService" />
      </intent-filter>
    </service>

    <!-- 添加 RECEIVER元素 -->
    <receiver android:name="com.ryanheise.audioservice.MediaButtonReceiver">
      <intent-filter>
        <action android:name="android.intent.action.MEDIA_BUTTON" />
      </intent-filter>
    </receiver>
  </activity>
</application>

iOS 设置

Info.plist文件中插入以下内容:

<key>UIBackgroundModes</key>
<array>
  <string>audio</string>
</array>

使用方法

1. 初始化背景服务

在应用程序启动时尽早调用initJustAudioBackground方法以初始化后台服务,以便在播放音频时显示通知。

void main() async {
  // 初始化后台服务以显示播放时的通知
  await initJustAudioBackground(NotificationSettings(androidNotificationChannelId: 'com.example.example'));
  runApp(MaterialApp(
    home: HomeScreen(),
  ));
}

2. 加载音频文件

创建一个包含音频源的ConcatenatingAudioSource对象。

final ConcatenatingAudioSource _playlist = ConcatenatingAudioSource(children: [
  AudioSource.uri(
    Uri.parse('https://file-examples-com.github.io/uploads/2017/11/file_example_MP3_700KB.mp3'),
    tag: MediaItem(
      id: '1',
      artUri: Uri.parse('https://picsum.photos/300/300'),
      title: 'Audio Title',
      album: 'amazing album'
    )
  )
]);

3. 调用播放器控件

使用加载的音频播放器控件,并传递播放列表和选项。

return Scaffold(
  body: SafeArea(
    child: Padding(
      padding: const EdgeInsets.all(20.0),
      child: Center(
        child: BasicAudioPlayer(playlist: _playlist),
      ),
    ),
  ),
);

完整示例代码

import 'package:easy_audio_player/helpers/init_just_audio_background.dart';
import 'package:easy_audio_player/models/models.dart';
import 'package:easy_audio_player/widgets/players/basic_audio_player.dart';
import 'package:flutter/material.dart';
import 'package:just_audio/just_audio.dart';
import 'package:audio_service/audio_service.dart';

void main() async {
  // 初始化后台服务以显示播放时的通知
  await initJustAudioBackground(NotificationSettings(androidNotificationChannelId: 'com.example.example'));
  runApp(MaterialApp(
    home: HomeScreen(),
  ));
}

class HomeScreen extends StatelessWidget {
  HomeScreen({Key? key}) : super(key: key);
  static const routeName = '/';

  final ConcatenatingAudioSource _playlist = ConcatenatingAudioSource(children: [
    AudioSource.uri(
      Uri.parse('https://file-examples-com.github.io/uploads/2017/11/file_example_MP3_700KB.mp3'),
      tag: MediaItem(
        id: '1',
        artUri: Uri.parse('https://picsum.photos/300/300'),
        title: 'Audio Title',
        album: 'amazing album'
      )
    )
  ]);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Padding(
          padding: const EdgeInsets.all(20.0),
          child: Center(
            child: BasicAudioPlayer(playlist: _playlist),
          ),
        ),
      ),
    );
  }
}

更多关于Flutter音频播放插件easy_audio_player的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter音频播放插件easy_audio_player的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


easy_audio_player 是一个用于 Flutter 的简单音频播放插件,它可以帮助你在 Flutter 应用中轻松地播放音频文件。以下是使用 easy_audio_player 的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 easy_audio_player 的依赖:

dependencies:
  flutter:
    sdk: flutter
  easy_audio_player: ^0.1.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在你的 Dart 文件中导入 easy_audio_player

import 'package:easy_audio_player/easy_audio_player.dart';

3. 初始化音频播放器

你可以通过 EasyAudioPlayer 类来初始化音频播放器:

EasyAudioPlayer audioPlayer = EasyAudioPlayer();

4. 播放音频

使用 play 方法来播放音频文件。你可以传入本地文件路径或网络 URL:

void playAudio() async {
  // 播放本地音频文件
  await audioPlayer.play('assets/audio/sample.mp3');

  // 或者播放网络音频文件
  await audioPlayer.play('https://www.example.com/audio/sample.mp3');
}

5. 暂停和恢复播放

你可以使用 pauseresume 方法来暂停和恢复播放:

void pauseAudio() async {
  await audioPlayer.pause();
}

void resumeAudio() async {
  await audioPlayer.resume();
}

6. 停止播放

使用 stop 方法来停止播放:

void stopAudio() async {
  await audioPlayer.stop();
}

7. 释放资源

在不再需要播放器时,记得释放资源:

void disposeAudioPlayer() async {
  await audioPlayer.dispose();
}

8. 监听播放状态

你可以通过监听播放器的状态来更新 UI 或执行其他操作:

audioPlayer.onPlayerStateChanged.listen((state) {
  print('Player state: $state');
});

9. 设置音量

你可以通过 setVolume 方法来设置音量(0.0 到 1.0 之间):

void setAudioVolume(double volume) async {
  await audioPlayer.setVolume(volume);
}

10. 设置播放位置

你可以通过 seek 方法来跳转到指定的播放位置(以秒为单位):

void seekAudio(double position) async {
  await audioPlayer.seek(position);
}

完整示例

以下是一个完整的示例,展示了如何在 Flutter 应用中使用 easy_audio_player

import 'package:flutter/material.dart';
import 'package:easy_audio_player/easy_audio_player.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: AudioPlayerScreen(),
    );
  }
}

class AudioPlayerScreen extends StatefulWidget {
  [@override](/user/override)
  _AudioPlayerScreenState createState() => _AudioPlayerScreenState();
}

class _AudioPlayerScreenState extends State<AudioPlayerScreen> {
  EasyAudioPlayer audioPlayer = EasyAudioPlayer();

  [@override](/user/override)
  void dispose() {
    audioPlayer.dispose();
    super.dispose();
  }

  void playAudio() async {
    await audioPlayer.play('https://www.example.com/audio/sample.mp3');
  }

  void pauseAudio() async {
    await audioPlayer.pause();
  }

  void resumeAudio() async {
    await audioPlayer.resume();
  }

  void stopAudio() async {
    await audioPlayer.stop();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Easy Audio Player'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: playAudio,
              child: Text('Play'),
            ),
            ElevatedButton(
              onPressed: pauseAudio,
              child: Text('Pause'),
            ),
            ElevatedButton(
              onPressed: resumeAudio,
              child: Text('Resume'),
            ),
            ElevatedButton(
              onPressed: stopAudio,
              child: Text('Stop'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部