带有背景音乐的 Flutter App(外部)

标签 flutter dart

当在后台运行的应用程序(即 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,
              ),
            ),
          ],
        ),
      ),
    );
  }
}

最佳答案

你可以比 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 的文件夹并将您的音乐放入其中

关于带有背景音乐的 Flutter App(外部),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50926537/

相关文章:

flutter - 错误:无法使用静态访问权限访问实例成员 'imageUrl'。 (位于[store] lib\main.dart:82处的static_access_to_instance_member)

flutter - 如何退出 Dart Pub CLI?

dart - flutter : How to specify a device id in flutter?

flutter - 无法以健全的空安全运行,因为依赖项不支持空安全

dart - 如何在 Dart 中获取数字长度?

flutter - "setState() or markNeedsBuild() called during build"尝试在消费者小部件(提供程序包)内的导航器中推送替换时出错

flutter - 如何扩展容器但停在某个尺寸?

dart - 如果我的 dart 文件是 Restful api 提供者的服务器端文件,我应该将它们放在哪里?

flutter - 如何将 Future<String> 中的变量传递给 Flutter 中的 void?

Flutter:如何获取文件类的 Assets 路径(视频)