flutter: Change audioplayers to just_audio
Because of following audioplayers exception: Error: PlatformException(Unexpected error!, null, java.lang.IllegalStateException at android.media.MediaPlayer._setDataSource(Native Method) at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1305) at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1288) at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1242) at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1218) at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1185) at xyz.luan.audioplayers.WrappedMediaPlayer.setUrl(WrappedMediaPlayer.kt:37) at xyz.luan.audioplayers.AudioplayersPlugin.handleMethodCall(AudioplayersPlugin.kt:62) at xyz.luan.audioplayers.AudioplayersPlugin.onMethodCall(AudioplayersPlugin.kt:37) at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233) at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85) at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:818) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:332) at android.os.Looper.loop(Looper.java:168) at android.app.ActivityThread.main(ActivityThread.java:6878) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:876) , null) And remove BGM Settings. Stack trace: package:flutter/src/services/message_codecs.dart 581:7 StandardMethodCodec.decodeEnvelope package:flutter/src/services/platform_channel.dart 158:18 MethodChannel._invokeMethod ===== asynchronous gap =========================== dart:async/zone.dart 1294:19 _CustomZone.registerBinaryCallback dart:async-patch/async_patch.dart 51:8 _asyncErrorWrapperHelper package:sanmill/services/audios.dart 79:19 Audios.playTone. package:stack_trace/src/chain.dart 94:24 Chain.capture. dart:async/zone.dart 1354:13 _rootRun dart:async/zone.dart 1258:19 _CustomZone.run dart:async/zone.dart 1789:10 _runZoned dart:async/zone.dart 1711:10 runZoned package:stack_trace/src/chain.dart 92:12 Chain.capture package:sanmill/services/audios.dart 78:11 Audios.playTone
This commit is contained in:
parent
46f1815cd1
commit
5d52250532
|
@ -18,27 +18,12 @@
|
|||
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:audioplayers/audio_cache.dart';
|
||||
import 'package:audioplayers/audioplayers.dart';
|
||||
import 'package:just_audio/just_audio.dart';
|
||||
import 'package:sanmill/common/config.dart';
|
||||
import 'package:stack_trace/stack_trace.dart';
|
||||
|
||||
class Audios {
|
||||
//
|
||||
static AudioPlayer _fixedBgmPlayer, _fixedTonePlayer;
|
||||
static AudioCache _bgmPlayer, _tonePlayer;
|
||||
|
||||
static loopBgm(String fileName) async {
|
||||
if (_bgmPlayer == null) {
|
||||
_fixedBgmPlayer = AudioPlayer();
|
||||
_bgmPlayer = AudioCache(prefix: 'audios/', fixedPlayer: _fixedBgmPlayer);
|
||||
|
||||
//await _bgmPlayer.loadAll(['bg_music.mp3']);
|
||||
}
|
||||
|
||||
_fixedBgmPlayer.stop();
|
||||
_bgmPlayer.loop(fileName);
|
||||
}
|
||||
static AudioPlayer _player;
|
||||
|
||||
static playTone(String fileName) async {
|
||||
if (!Config.toneEnabled) {
|
||||
|
@ -47,49 +32,45 @@ class Audios {
|
|||
|
||||
if (Platform.isWindows) {
|
||||
print(
|
||||
"audioplayers is not support Windows. See: https://pub.dev/packages/audioplayers");
|
||||
"audio players is not support Windows. See: https://pub.dev/packages/just_audio");
|
||||
return;
|
||||
}
|
||||
|
||||
if (_tonePlayer == null) {
|
||||
//
|
||||
_fixedTonePlayer = AudioPlayer();
|
||||
_tonePlayer =
|
||||
AudioCache(prefix: 'assets/audios/', fixedPlayer: _fixedTonePlayer);
|
||||
try {
|
||||
if (_player == null) {
|
||||
_player = AudioPlayer();
|
||||
}
|
||||
|
||||
await _tonePlayer.loadAll([
|
||||
'draw.mp3',
|
||||
'go.mp3',
|
||||
'illegal.mp3',
|
||||
'mill.mp3',
|
||||
'fly.mp3',
|
||||
'lose.mp3',
|
||||
'place.mp3',
|
||||
'remove.mp3',
|
||||
'select.mp3',
|
||||
'win.mp3',
|
||||
]);
|
||||
await _player.pause();
|
||||
await _player.seek(Duration.zero);
|
||||
|
||||
var duration = await _player.setAsset("assets/audios/" + fileName);
|
||||
|
||||
_player.play();
|
||||
} on PlayerException catch (e) {
|
||||
// iOS/macOS: maps to NSError.code
|
||||
// Android: maps to ExoPlayerException.type
|
||||
// Web: maps to MediaError.code
|
||||
print("Error code: ${e.code}");
|
||||
// iOS/macOS: maps to NSError.localizedDescription
|
||||
// Android: maps to ExoPlaybackException.getMessage()
|
||||
// Web: a generic message
|
||||
print("Error message: ${e.message}");
|
||||
} on PlayerInterruptedException catch (e) {
|
||||
// This call was interrupted since another audio source was loaded or the
|
||||
// player was stopped or disposed before this audio source could complete
|
||||
// loading.
|
||||
print("Connection aborted: ${e.message}");
|
||||
} catch (e) {
|
||||
// Fallback for all errors
|
||||
print(e);
|
||||
}
|
||||
|
||||
//await _fixedTonePlayer.stop();
|
||||
await _fixedTonePlayer.pause();
|
||||
await _fixedTonePlayer.seek(Duration.zero);
|
||||
//await release();
|
||||
Chain.capture(() {
|
||||
_tonePlayer.play(fileName);
|
||||
});
|
||||
}
|
||||
|
||||
static stopBgm() {
|
||||
if (_fixedBgmPlayer != null) _fixedBgmPlayer.stop();
|
||||
}
|
||||
|
||||
static Future<void> release() async {
|
||||
if (_fixedBgmPlayer != null) {
|
||||
await _fixedBgmPlayer.release();
|
||||
}
|
||||
if (_fixedTonePlayer != null) {
|
||||
await _fixedTonePlayer.release();
|
||||
if (_player != null) {
|
||||
await _player.stop();
|
||||
await _player.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,7 +20,6 @@ import 'package:flutter/material.dart';
|
|||
import 'package:flutter_colorpicker/flutter_colorpicker.dart';
|
||||
import 'package:sanmill/common/config.dart';
|
||||
import 'package:sanmill/generated/l10n.dart';
|
||||
import 'package:sanmill/services/audios.dart';
|
||||
import 'package:sanmill/style/colors.dart';
|
||||
|
||||
class GameSettingsPage extends StatefulWidget {
|
||||
|
@ -263,21 +262,6 @@ class _GameSettingsPageState extends State<GameSettingsPage> {
|
|||
Config.save();
|
||||
}
|
||||
|
||||
setMusic(bool value) async {
|
||||
//
|
||||
setState(() {
|
||||
Config.bgmEnabled = value;
|
||||
});
|
||||
|
||||
if (Config.bgmEnabled) {
|
||||
//Audios.loopBgm('bg_music.mp3');
|
||||
} else {
|
||||
Audios.stopBgm();
|
||||
}
|
||||
|
||||
Config.save();
|
||||
}
|
||||
|
||||
setTone(bool value) async {
|
||||
//
|
||||
setState(() {
|
||||
|
@ -338,13 +322,6 @@ class _GameSettingsPageState extends State<GameSettingsPage> {
|
|||
margin: const EdgeInsets.symmetric(vertical: 10),
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
SwitchListTile(
|
||||
activeColor: UIColors.primaryColor,
|
||||
value: Config.bgmEnabled,
|
||||
title: Text(S.of(context).sound, style: itemStyle),
|
||||
onChanged: setMusic,
|
||||
),
|
||||
_buildDivider(),
|
||||
SwitchListTile(
|
||||
activeColor: UIColors.primaryColor,
|
||||
value: Config.toneEnabled,
|
||||
|
|
|
@ -12,7 +12,7 @@ dependencies:
|
|||
flutter_localizations:
|
||||
sdk: flutter
|
||||
cupertino_icons: ^1.0.0
|
||||
audioplayers: ^0.17.4
|
||||
just_audio: ^0.6.14+1
|
||||
path_provider: ^1.6.27
|
||||
package_info: ^0.4.3+4
|
||||
uuid: ^2.2.2
|
||||
|
|
Loading…
Reference in New Issue