Flutter音乐播放插件audioplayers使用步骤详解

作者:江山清风山间明月 时间:2021-10-12 14:46:05 

简介

Flutter的audioplayers是一个Flutter插件,可以播放多个同时的音频文件,支持Android、iOS、Linux、macOS、Windows和web平台。它有以下特点:

  • 可以从本地文件、网络资源或内存中加载音频

  • 可以控制音量、进度、速度和循环

  • 可以播放多个音频同时,或者使用单例模式

  • 可以监听播放状态和位置变化

  • 可以设置通知栏和锁屏控制

使用步骤

要使用audioplayers,您需要在pubspec.yaml中添加依赖:

dependencies:
 audioplayers: ^4.0.1

然后在您的代码中导入包:

import 'package:audioplayers/audioplayers.dart';

接下来,您可以创建一个AudioPlayer对象,并调用相应的方法来播放音频。例如,要从网络资源播放音频,您可以这样做:

AudioPlayer audioPlayer = AudioPlayer();
audioPlayer.play('https://example.com/sound.mp3');

要从本地文件播放音频,您需要先将音频文件放在assets文件夹下,并在pubspec.yaml中声明:

flutter:
 assets:
   - assets/sounds/

然后,您可以使用AudioCache对象来加载和播放本地音频:

AudioCache audioCache = AudioCache();
audioCache.play('assets/sounds/sound.wav');

要控制音频的播放,您可以使用AudioPlayer对象的一些方法,例如:

audioPlayer.pause(); // 暂停播放
audioPlayer.resume(); // 恢复播放
audioPlayer.stop(); // 停止播放
audioPlayer.seek(Duration(seconds: 10)); // 跳转到指定位置
audioPlayer.setVolume(0.5); // 设置音量
audioPlayer.setPlaybackRate(playbackRate: 1.5); // 设置速度
audioPlayer.setReleaseMode(ReleaseMode.LOOP); // 设置循环模式

要监听音频的状态和位置变化,您可以使用AudioPlayer对象的一些属性,例如:

audioPlayer.onPlayerStateChanged.listen((state) {
 // 处理不同的状态
});
audioPlayer.onDurationChanged.listen((duration) {
 // 获取音频的总时长
});
audioPlayer.onAudioPositionChanged.listen((position) {
 // 获取音频的当前位置
});
audioPlayer.onPlayerError.listen((msg) {
 // 处理错误信息
});

要设置通知栏和锁屏控制,您需要使用AudioPlayer对象的setNotification方法,并传入一个NotificationService对象。NotificationService对象包含了一些属性,例如标题、作者、封面图片等。例如:

await audioPlayer.setNotification(
 NotificationService(
   title: 'Title',
   author: 'Author',
   imageUrl: 'https://example.com/image.jpg',
   forwardSkipInterval: const Duration(seconds: 30),
   backwardSkipInterval: const Duration(seconds: 30),
   duration: duration,
   enableNextTrackButton: true,
   enablePreviousTrackButton: true,
 ),
);

资源文件的存放

assets/audio 目录下 - 这是指定给音频资源的目录,audioplayers 会自动搜索这个目录下的音频文件。

所以如果我们有一个 click.mp3 音频,可以放在:

assets/audio/click.mp3

然后在代码中直接引用文件名播放:

audioCache.play('click.mp3');

Flutter音乐播放插件audioplayers使用步骤详解

2. 任意目录,然后指定完整资源路径 - 我们也可以放在其他目录下,然后在播放时传入完整资源路径:

audio/click.mp3

在代码中播放:

audioCache.play('audio/click.mp3');

放在网络 - 我们也可以直接传入一个网络资源的链接,audioplayers 会直接播放该资源:

audioCache.play('https://example.com/click.mp3');

所以总结来说,在 Flutter 中我们可以:

  • 将音频资源放在 assets/audio 目录下

  • 放在任意目录,指定完整路径使

  • 用网络资源来播放音频。一般来说,将资源放在 assets 下或同工程内是比较好的方式。而使用网络资源需要考虑到网络状态及缓存等问题。

来源:https://blog.csdn.net/yikezhuixun/article/details/130660544

标签:Flutter,音乐,插件,audioplayers
0
投稿

猜你喜欢

  • c# xml转word的实现示例

    2023-01-05 15:47:59
  • 解决Android studio模拟器启动失败的问题

    2022-06-12 00:55:01
  • Android自定义view实现电影票在线选座功能

    2022-04-26 22:26:59
  • 解决Maven项目中 Invalid bound statement 无效的绑定问题

    2021-08-13 10:30:41
  • springboot默认日志框架选择源码解析(推荐)

    2021-06-19 08:02:51
  • java导出Excel通用方法的实例详解

    2022-06-25 14:28:25
  • Java基础知识精通二维数组的应用

    2022-02-03 03:01:28
  • SpringBoot遇到的坑@Qualifier报红的解决

    2022-06-03 07:49:55
  • Android基于OpenCV实现QR二维码检测

    2021-12-13 07:56:39
  • 基于Java信号量解决死锁过程解析

    2023-05-13 22:23:02
  • 一文详解kafka序列化器和拦截器

    2023-06-18 01:06:08
  • C#预定义的基础类型转换

    2023-08-13 03:14:16
  • springboot做代理分发服务+代理鉴权的实现过程

    2021-06-28 03:22:14
  • Hadoop源码分析六启动文件namenode原理详解

    2021-08-20 01:03:55
  • C# params可变参数的使用注意详析

    2021-10-29 12:33:27
  • .net的序列化与反序列化实例

    2022-12-29 00:50:50
  • java中压缩文件并下载的实例详解

    2022-01-01 04:59:12
  • Android Handler runWithScissors 梳理流程解析

    2023-01-29 11:51:27
  • winform中的ListBox和ComboBox绑定数据用法实例

    2023-09-24 05:02:13
  • Android中Gallery和ImageSwitcher的使用实例

    2021-05-28 15:52:12
  • asp之家 软件编程 m.aspxhome.com