带背景音乐的 Flutter App(外部)
Posted
技术标签:
【中文标题】带背景音乐的 Flutter App(外部)【英文标题】:Flutter App with background music (external) 【发布时间】:2018-11-28 07:22:27 【问题描述】:在后台运行的应用程序(即 Google Play 音乐、Apple Music、Spotify 等)上播放音乐时,如果您在 Flutter 应用程序中播放任何音频,则背景音乐只会停止/暂停,并且不会在您启动后重新启动音频已播放完毕。
我已经在 ios 上使用 TTS 库和 AudioPlayer 库进行了尝试。
关于在我的音频完成后如何继续播放背景音频的任何提示(实际上只是一个 2/3 秒的短语)?
尚不确定这是否会影响 android。
注意:此示例中使用了 TTS,但它发生在我尝试过的每个库中。
Pubspec.yaml
tts: "^1.0.1"
代码:
import 'package:flutter/material.dart';
import 'package:tts/tts.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget
@override
Widget build(BuildContext context)
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.red,
),
home: AudioExample(),
);
class AudioExample extends StatefulWidget
@override
_AudioExampleState createState() => _AudioExampleState();
class _AudioExampleState extends State<AudioExample>
speak() async
Tts.speak('Hello World');
@override
Widget build(BuildContext context)
return Scaffold(
appBar: AppBar(
title: Text('Audio example app'),
),
body: Container(
width: double.infinity,
height: double.infinity,
decoration: BoxDecoration(
color: Colors.grey[300],
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
IconButton(
icon: Icon(Icons.play_arrow),
onPressed: speak,
color: Colors.red,
iconSize: 100.0,
),
Padding(
padding: const EdgeInsets.all(20.0),
child: Text(
'Will say hello world once clicked and pause background audio on iOS - how to restart background audio after playing has finished?',
textAlign: TextAlign.center,
),
),
],
),
),
);
【问题讨论】:
你应该在相应的插件上打开一个问题。 【参考方案1】:你可以比 Flutter 更好地在 Java 文件中添加音乐并添加循环转到 android/app/src/main/java/com/example/ProjectName/MainActivity.java
并添加
mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.MusicName);
mediaPlayer.setLooping(true);
mediaPlayer.start();
mediaPlayer.setLooping(true);
在 onCreate 方法中并转到名为 res 的文件夹并在其中创建一个名为 raw 的文件夹并将您的音乐放入其中
【讨论】:
谢谢卡里姆,不过我的问题是 iOS,还没有测试 Android。我拼凑了一个适用于 iOS 的修复程序,但它有问题(我是 Java 开发人员,而不是 Obj-C)。 在互联网上搜索并获得 Swift 或 Obj-C 脚本,我没有任何 Java 经验,但我获得了一个脚本并将其插入到 Java 类中 @KarimMohamed 你真的不应该为不知道你在做什么而只是复制粘贴你在互联网上发现的脚本而感到自豪.... 我并不骄傲,但它比颤抖更容易,你必须看看谁更能创造你的财产并成功,因为我不应该为了一件小事去学习一门新语言:D" , 最后计算机不会对您的语言感兴趣,而是对 0 和 1 感兴趣。以上是关于带背景音乐的 Flutter App(外部)的主要内容,如果未能解决你的问题,请参考以下文章