Flutter Window 용 사운드 재생을 위해서는 아래 라이브러리를 사용한다.
window 용 라이브러리 사용 방법이 없어서, 정리하기로 했다.
(라이브러리 소스 뒤적뒤적... )
[ Window 용 Flutter 라이브러리 Url ]
https://pub.dev/packages/audioplayers_windows/install
1. pubspec.yaml
dependencies:
....
audioplayers_windows: ^4.0.0
2. 라이브러리 Get 후, 아래 패키지를 사용이 가능하다.
import 'package:audioplayers_platform_interface/audioplayers_platform_interface.dart';
3. static 으로 구성된 instace 으로 객체를 가져 올 수 있다.
import 'package:audioplayers_platform_interface/audioplayers_platform_interface.dart';
class ... {
// 경고 사운드
AudioplayersPlatformInterface soundWarringPlayer = AudioplayersPlatformInterface.instance;
}
4. 사운드 파일 경로는 assets 폴더 아래에 위치(SOUND_WARRING_PATH)하였으며, 사운드 ID(SOUND_WARRING_ID) 로 여러 사운드를 구분 할 수 있다.
create 메소드를 호출시, stream 객체가 만들어 지는데, Future 비동기 방식이므로, then 메소드를 이용하여, 추후 stream 객체가 만들어지면, 상태 값을 받을 수 있도록 getEventStream 을 한다.
import 'package:audioplayers_platform_interface/audioplayers_platform_interface.dart';
class ... {
// 경고 사운드
final String SOUND_WARRING_ID = "SOUND_WARRING";
final String SOUND_WARRING_PATH = "assets/sound_waring.wav";
// 경고 사운드
AudioplayersPlatformInterface soundWarringPlayer = AudioplayersPlatformInterface.instance;
@override
void initState() {
// 경고 사운드 설정
Future<void> soundWarringFuture = soundWarringPlayer.create(SOUND_WARRING_ID); // 생성
soundWarringFuture.then((value) {
// 상태 값
Stream<AudioEvent> soundWarringEvent = soundWarringPlayer.getEventStream(SOUND_WARRING_ID);
soundWarringEvent.listen((event) {
debugPrint(event.eventType.name);
});
});
// 재생 url 설정
soundWarringPlayer.setSourceUrl(SOUND_WARRING_ID, SOUND_WARRING_PATH);
// 반복 설정
soundWarringPlayer.setReleaseMode(SOUND_WARRING_ID, ReleaseMode.loop);
}
}
5. 아래 소스를 주석하면, 1번만 재생이 가능하고, 종료시 상태값 AudioEventType.complete (complete) 값을 받을 수 있다.
ReleseMode.loop 는 stop 시, complete 값은 들어오지 않고, seekComplete(AudioEventType.seekComplete) 값만 들어온다.
soundWarringPlayer.setReleaseMode(SOUND_WARRING_ID, ReleaseMode.loop); // 반복 설정
6. 사운드 플레이가 가능하다.
soundWarringPlayer.resume(SOUND_WARRING_ID);
7. 사운드 중지가 가능하다.
soundWarringPlayer.stop(SOUND_WARRING_ID);
8. 사운드 중지 후, relese 와 dispose 후에는 resume 을 수행하여도 사운드는 재생되지 않는다.
soundWarringPlayer.stop(SOUND_WARRING_ID);
soundWarringPlayer.release(SOUND_WARRING_ID);
soundWarringPlayer.dispose(SOUND_WARRING_ID);
'Programming > Flutter' 카테고리의 다른 글
[Flutter] Http POST (json) (0) | 2024.03.17 |
---|---|
[Flutter] CRC16 From Dart (0) | 2024.03.10 |
[Flutter] StreamController(Broadcast, Listener) 구현하기 (0) | 2024.03.09 |
[Flutter] Flutter 시작하기 & 후기 (0) | 2021.03.28 |