序章
Flutter の audioplayers は、複数のオーディオ ファイルを同時に再生できる Flutter プラグインで、Android、iOS、Linux、macOS、Windows、および Web プラットフォームをサポートしています。次のような特徴があります。
- オーディオはローカル ファイル、ネットワーク リソース、またはメモリからロードできます
- 音量、進行状況、速度、ループを制御可能
- 複数のオーディオを同時に再生したり、シングルトン パターンを使用したりできます
- 再生状況や位置の変化をモニタリング可能
- 通知バーとロック画面コントロールを設定できます
使用手順
- オーディオプレーヤーを使用するには、pubspec.yaml に依存関係を追加する必要があります。
dependencies:
audioplayers: ^4.0.1
次に、コードにパッケージをインポートします。
import 'package:audioplayers/audioplayers.dart';
次に、AudioPlayer オブジェクトを作成し、適切なメソッドを呼び出してオーディオを再生します。たとえば、Web リソースからオーディオを再生するには、次のようにします。
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 オブジェクトを渡す必要があります。NoticeService オブジェクトには、タイトル、作成者、カバー画像などのいくつかのプロパティが含まれています。例えば:
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 ディレクトリ - これはオーディオ リソースに割り当てられたディレクトリです。オーディオプレーヤーはこのディレクトリ内のオーディオ ファイルを自動的に検索します。
したがって、click.mp3 オーディオがある場合は、次の場所に配置できます。
assets/audio/click.mp3
次に、コード内で再生するファイル名を直接参照します。
audioCache.play('click.mp3');
2. 任意のディレクトリに、完全なリソース パスを指定します。他のディレクトリに配置して、再生時に完全なリソース パスを渡すこともできます:
audio/click.mp3
コードで再生します。
audioCache.play('audio/click.mp3');
- ネットワーク上 - ネットワーク リソースへのリンクを直接渡すこともでき、オーディオプレーヤーはリソースを直接再生します。
audioCache.play('https://example.com/click.mp3');
要約すると、Flutter では次のことができます。
- オーディオリソースをassets/audioディレクトリに置きます
- 任意のディレクトリに置き、フルパスを指定してください
- Web リソースを使用してオーディオを再生します。一般に、リソースをアセットの下または同じプロジェクト内に配置する方が良い方法です。ネットワーク リソースの使用には、ネットワークのステータスやキャッシュなどの問題を考慮する必要があります。