【发布时间】:2019-03-18 22:20:57
【问题描述】:
我正在使用颤振插件audioplayers: ^0.7.8, 以下代码在Android 中运行,但在IOS 中不运行。我在真实的 ios 设备中运行代码并单击按钮。它假设播放 mp3 文件,但根本没有声音。请帮忙解决这个问题。
我已经设置了 info.plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
从控制台打印出来:
- flutter:加载完毕,uri=file:///var/mobile/Containers/Data/Application/E3A576E2-0F21-44CF-AF99-319D539767D0/Library/Caches/demo.mp3
- 正在将文件同步到设备 iPhone...
- flutter:_platformCallHandler 调用 audio.onCurrentPosition {playerId:273e1d27-b6e8-4516-bb3f-967a41dff308,值:0}
- flutter:_platformCallHandler 调用 audio.onError {playerId:273e1d27-b6e8-4516-bb3f-967a41dff308,值:AVPlayerItemStatus.failed}
这里是我的代码:
class _MyHomePageState extends State<MyHomePage> {
AudioPlayer audioPlugin = AudioPlayer();
String mp3Uri;
@override
void initState() {
AudioPlayer.logEnabled = true;
_load();
}
Future<Null> _load() async {
final ByteData data = await rootBundle.load('assets/demo.mp3');
Directory tempDir = await getTemporaryDirectory();
File tempFile = File('${tempDir.path}/demo.mp3');
await tempFile.writeAsBytes(data.buffer.asUint8List(), flush: true);
mp3Uri = tempFile.uri.toString();
print('finished loading, uri=$mp3Uri');
}
void _playSound() {
if (mp3Uri != null) {
audioPlugin.play(mp3Uri, isLocal: true,
);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Audio Player Demo Home Page'),
),
body: Center(),
floatingActionButton: FloatingActionButton(
onPressed: _playSound,
tooltip: 'Play',
child: const Icon(Icons.play_arrow),
),
);
}
}
【问题讨论】:
-
在
audioPlugin.play()方法中添加volume参数,结果是什么。它是 0.0 和 1.0 之间的双精度值。 -
同理,IOS不行。
标签: ios flutter audio-player