Flutter音频播放插件easy_audio_player的使用
Flutter音频播放插件easy_audio_player的使用

音频播放器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
更多关于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. 暂停和恢复播放
你可以使用 pause
和 resume
方法来暂停和恢复播放:
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'),
),
],
),
),
);
}
}