在后台,iOS和Android中使音乐应用程序保持活动状态?

旁遮普人

我正在使用Flutter构建音乐播放应用程序。作为一个开发人员,它可以帮助我为两个平台构建一次应用程序。但是,在这两个平台上我都遇到了一些小问题。尽管我已经克服了一些困难,但是我还是想不出一个主要的错误/问题,而这个错误/问题只是出于制作音乐应用程序的目的。如果应用程序不在前台,则音乐不会改变。

我正在使用以下包:audioplayers(https://pub.dartlang.org/packages/audioplayers)。我的应用程序正在播放歌曲,mp3文件是在线托管的,并且具有单独的链接。

当第一首歌曲完成播放时,AudioPlayerState.COMPLETED。我打了电话,播放新的歌曲网址。如果应用程序在前景中,则效果很好,但如果应用程序在背景中,则效果不佳。这是在最新版本的iOS上发生的,而我在Android 5.0(而不是Android 8.0+)上发现了这一点。当我对此进行测试时,在Android Studio的“运行”标签中,它确实显示了已进行呼叫,但没有播放歌曲,但是当我打开应用程序时,它确实显示了更新的专辑封面,该专辑封面也位于网址上(不在歌曲元数据)。如果我叫恢复,从后台打开应用程序备份后,歌曲开始播放。

我不知道这是软件包的问题还是iOS的问题,我已经在Github软件包上打开了一个问题。但是,我认为,如果在我检查Xcode的背景音频之前将应用程序最小化,则它不会播放歌曲。

import 'package:flutter/material.dart';
import 'package:audioplayers/audioplayers.dart';
import 'dart:math';

AudioPlayer audioPlayer = new AudioPlayer();

class MusicPlay {
  MusicPlay() {
    _initAudioPlayer();
  }

  play(String audioURL) async {
    int result = await audioPlayer.play(audioURL);
    if (result == 1) {
      // success
    }
  }

  nextSong() async {
    play(String nextAudioURL)
  }

  void _initAudioPlayer() {
    audioPlayer.audioPlayerStateChangeHandler = (AudioPlayerState state) {
      switch (state) {
        case AudioPlayerState.PLAYING:
          break;
        case AudioPlayerState.PAUSED:
          break;
        case AudioPlayerState.STOPPED:
          break;
        case AudioPlayerState.COMPLETED:
          nextSong();
          break;
      }
    };
  }
}
旁遮普人

解决方案是在iOS平台上使用一根衬垫。

您需要在第一个视图控制器的init或viewDidLoad方法中使用以下代码:

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

https://stackoverflow.com/a/9721032/6024667

迅捷3 UIApplication.sharedApplication().beginReceivingRemoteControlEvents()

斯威夫特4 UIApplication.shared.beginReceivingRemoteControlEvents()

在返回之前,将此代码添加到iOS / Runner目录内的AppDelegate.m / AppDelegate.swift中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

iOS应用程序如何在后台无限期地保持TCP连接的活动?

如何在react-native中在后台杀死的Android应用程序保持状态

保持iOS应用程序永远在后台运行

无法在后台使用应用程序保持GPS处于活动状态,或者在前台或后台使用应用程序无法读取位置

iOS快速流应用程序无法在后台模式下播放音乐

Android:在后台进行活动时保持活动状态

即使启动了新活动,也使应用程序保持在后台

通知未出现在后台状态和应用程序的终止状态

当应用程序在后台运行时,如何在BaseActivity中使用onPause停止音乐(MediaPlayer)

保持在后台时,iOS 应用程序返回到 rootViewController

当应用程序在后台时活动和片段会发生什么

在混合应用程序(Angular 和 Apache Cordova)中保持套接字在后台运行

在后台状态后打开应用程序时黑屏

在后台将应用程序状态更改为前台

仅当我的应用程序还处于活动状态且在后台运行且未被破坏时,才如何在后台运行BLE扫描?

如何在Android应用程序的后台播放音乐?

ios - 使应用程序在后台删除和更新核心数据(目标 c)

应用程序在后台时跳过或禁用iOS通知

iOS应用程序默认在后台模式下运行

iOS应用程序在后台执行任务

iOS应用程序可在后台连续运行

在后台打开iOS父应用程序

在不停止fe音乐应用程序的情况下在后台使用AVSpeechSynthesizer

如果应用程序在后台运行,如何阻止音乐开始播放?

在Ionic / ngCordova中关闭应用程序时在后台播放音乐

如何使Android应用程序始终在后台运行?

android:当应用程序在后台时使屏幕变暗

在Android中杀死在后台运行的应用程序

如果我的应用程序在后台运行,为什么Android OS不会为singleTop活动创建新实例?