728x90
목적:
audioplayers package를 이용해서 해동이 완료되었을 때 알람을 울리는 기능 만들기
문제:
아래의 코드를 돌렸을 때,
late final _player = AudioPlayer();
Future<void> playNotificationSound() async {
await _player.setSource(AssetSource('audios/alarm_sound.wav'));
}
아래와 같은 문제가 발생
PlatformException (PlatformException(AndroidAudioError, null, java.lang.IllegalStateException
at android.media.MediaPlayer._prepareAsync(Native Method)
at android.media.MediaPlayer.prepareAsync(MediaPlayer.java:1369)
at xyz.luan.audioplayers.player.MediaPlayerPlayer.prepare(MediaPlayerPlayer.kt:92)
at xyz.luan.audioplayers.player.WrappedPlayer.configAndPrepare(WrappedPlayer.kt:371)
at xyz.luan.audioplayers.player.WrappedPlayer.setSource(WrappedPlayer.kt:33)
at xyz.luan.audioplayers.AudioplayersPlugin.methodHandler(AudioplayersPlugin.kt:127)
at xyz.luan.audioplayers.AudioplayersPlugin.access$methodHandler(AudioplayersPlugin.kt:29)
at xyz.luan.audioplayers.AudioplayersPlugin$onAttachedToEngine$1$1.invoke(AudioplayersPlugin.kt:50)
at xyz.luan.audioplayers.AudioplayersPlugin$onAttachedToEngine$1$1.invoke(AudioplayersPlugin.kt:50)
at xyz.luan.audioplayers.AudioplayersPlugin$safeCall$1.invokeSuspend(AudioplayersPlugin.kt:75)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
, null))
해결과정:
소름.. 플러터는 모든 게 클래스라더니 이것도 클래스였어?
https://api.flutter.dev/flutter/services/PlatformException-class.html
공식문서의 설명은 이렇다.
Thrown to indicate that a platform interaction failed in the platform plugin.
즉, platform plugin에서 platform interaction이 실패했을 때 이런 문제가 발생한다.
이 부분에 대해 좀더 자세히 알아보다가 성질나서 그만두고
assets_audio_player라는 패키지를 이용해서 해결했다. 코드는 아래와 같다.
Future<void> playNotificationSound() async {
assetsAudioPlayer.open(
Audio("assets/audios/alarm_sound.wav"),
);
}
느낀 점:
에러를 찾으면 제발 흥분하지 말자.
차분하고 조용하게 착착착 거슬러 올라가야 한다.
그리고 새로운 패키지 쓸 때 readme 좀 제발 제대로 읽자.
이미 검증된 루트가 있는데 굳이 블로그에 쓰여있는 불확실한 방법을
우선하여 사용할 이유가 없다.
반응형
'프레임워크 > flutter' 카테고리의 다른 글
[Error]Incorrect use of ParentDataWidget. (0) | 2023.11.28 |
---|---|
[Error]Instance member can't be accessed using static access. (0) | 2023.11.25 |
[Error - 아직 해결 안됨] flutter apk file 만들 때 (0) | 2023.11.09 |
[개념]apk파일로 내보내기 (0) | 2023.11.08 |
[개념]AndroidManifest.xml 정리 (0) | 2023.11.08 |