带背景音乐的 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(外部)的主要内容,如果未能解决你的问题,请参考以下文章

uni-app 176添加背景提示音

如何在 Flutter 中制作带背景的抠图图标?

Uniapp 背景音倍速切换ios问题

Flutter App:背景不会从黑色变为蓝绿色

Flutter - 给App增加启动屏幕(Splash Screen)并且设置背景颜色

android形状属性锁屏密码动态模糊kotlin项目抖音动画记账app视频播放器等源码