Flutter音频播放插件flutter_radio_player_nf的使用

发布于 1周前 作者 eggper 来自 Flutter

Flutter音频播放插件flutter_radio_player_nf的使用

Flutter音频播放插件flutter_radio_player_nf是一个非常有用的库,它能够处理单个流媒体的精确播放。该插件旨在最大限度地利用其功能。此插件原生支持在Android和iOS上播放流媒体音频,并且具有支持后台音乐播放的功能。此外,该插件还深度集成了Android的MediaSession和iOS的RemoteControl功能(控制中心)。它还支持通过wearOS和WatchOS来控制播放器。

特性

  • 支持Android和iOS
  • 支持后台音乐播放
  • 与watchOS和WearOS集成良好
  • 处理网络中断
  • 高度响应
  • 开发者友好(代码中放置了日志,便于追踪错误)

响应性?

与其他音乐播放插件不同,Flutter Radio Player非常响应。它使用事件和流与底层进行通信,使得插件在应用程序(Flutter)端和本地端都非常响应。

插件事件

此插件利用Android的LocalBroadcast和iOS的通知中心推送事件。事件名称如下:

  • flutter_radio_playing
  • flutter_radio_paused
  • flutter_radio_stopped
  • flutter_radio_error
  • flutter_radio_loading

入门指南

步骤1:添加依赖

在你的包的pubspec.yaml文件中添加以下依赖项:

dependencies:
  flutter_radio_player_nf: ^1.X.X

步骤2:安装依赖

在终端中运行以下命令以安装依赖项:

$ flutter pub get

步骤3:导入库

在Dart文件中导入该库:

import 'package:flutter_radio_player_nf/flutter_radio_player_nf.dart';

步骤4:配置插件

创建一个新的播放器实例。一个FlutterRadioPlayer实例一次只能播放一个音频流。要创建它,只需调用构造函数。但是,请勿为服务创建多个实例,因为FRP使用FOREGROUND_SERVICE来保持自身在最小化应用时仍然活跃。

FlutterRadioPlayer _flutterRadioPlayer = new FlutterRadioPlayer();

当你有一个FRP实例后,可以调用init方法来初始化平台特定的播放器准备。有关API文档,请参阅FRP API

await _flutterRadioPlayer.init("Flutter Radio Example", "Live", "URL_HERE", "true");

在播放器准备好之后,你可以调用playOrPause方法来切换音频流。

await _flutterRadioPlayer.playOrPause();

FRP允许你在播放器初始化后更改URL。你可以在FRP对象上调用setUrl方法来更改流URL。

await _flutterRadioPlayer.setUrl('URL_HERE', "false");

调用上述方法将导致现有URL暂停并播放新设置的URL。请参阅FRP API获取API文档。

除了上述提到的方法外,FRP还公开了以下方法:

  • stop() - 将停止所有流媒体音频流并从FOREGROUND_SERVICE中分离。你需要重新初始化才能再次使用插件。
await _flutterRadioPlayer.stop()
  • start() - 使用已初始化的对象启动音频流。
await _flutterRadioPlayer.start()
  • pause() - 使用已初始化的对象暂停音频流。
await _flutterRadioPlayer.pause()

现在这还不是全部。当涉及到播放单个音频流时,此插件几乎处理了一切。从播放器元数据到网络中断,FRP都能轻松应对。请参阅示例以了解FRP能做些什么。

iOS和Android支持

如果插件无法初始化,请确保为您的应用程序授予后台进程权限。

对于您的Android应用程序,您可能需要在AndroidManifest.xml中添加权限。这些已经在库级别添加。

<!-- 权限 -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.INTERNET" />

<!-- 服务 -->
<application android:usesCleartextTraffic="true">
    <service android:name=".core.StreamingCore"/>
</application>

更多关于Flutter音频播放插件flutter_radio_player_nf的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter音频播放插件flutter_radio_player_nf的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_radio_player_nf 是一个用于在 Flutter 应用中播放网络广播电台的插件。它支持后台播放、通知控制、锁屏控制等功能,适合用于开发网络广播应用。

以下是使用 flutter_radio_player_nf 插件的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 flutter_radio_player_nf 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_radio_player_nf: ^1.0.0  # 使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 初始化插件

main.dart 或其他入口文件中初始化 flutter_radio_player_nf

import 'package:flutter/material.dart';
import 'package:flutter_radio_player_nf/flutter_radio_player_nf.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Radio Player',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: RadioPlayerScreen(),
    );
  }
}

class RadioPlayerScreen extends StatefulWidget {
  @override
  _RadioPlayerScreenState createState() => _RadioPlayerScreenState();
}

class _RadioPlayerScreenState extends State<RadioPlayerScreen> {
  final FlutterRadioPlayer _flutterRadioPlayer = FlutterRadioPlayer();

  @override
  void initState() {
    super.initState();
    _initializeRadioPlayer();
  }

  void _initializeRadioPlayer() async {
    await _flutterRadioPlayer.init(
      "Flutter Radio Player",  // 通知标题
      "Playing",               // 通知描述
      "https://example.com/radio.mp3",  // 电台URL
      false,                   // 是否自动播放
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Radio Player'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: () async {
                await _flutterRadioPlayer.play();
              },
              child: Text('Play'),
            ),
            ElevatedButton(
              onPressed: () async {
                await _flutterRadioPlayer.pause();
              },
              child: Text('Pause'),
            ),
            ElevatedButton(
              onPressed: () async {
                await _flutterRadioPlayer.stop();
              },
              child: Text('Stop'),
            ),
          ],
        ),
      ),
    );
  }
}

3. 控制播放

_RadioPlayerScreenState 中,我们定义了三个按钮分别用于播放、暂停和停止广播。

  • _flutterRadioPlayer.play():开始播放广播。
  • _flutterRadioPlayer.pause():暂停播放广播。
  • _flutterRadioPlayer.stop():停止播放广播。

4. 后台播放和通知控制

flutter_radio_player_nf 插件支持后台播放和通知控制。在初始化时,插件会自动创建一个通知,用户可以在通知栏中控制播放、暂停和停止操作。

5. 处理播放状态

你可以监听播放状态的变化,例如播放、暂停、停止等事件。通过 FlutterRadioPlayerstateStream 可以获取播放状态:

@override
void initState() {
  super.initState();
  _initializeRadioPlayer();
  _flutterRadioPlayer.stateStream.listen((state) {
    print("Current State: $state");
  });
}

6. 释放资源

在应用退出时,记得释放 FlutterRadioPlayer 的资源:

@override
void dispose() {
  _flutterRadioPlayer.dispose();
  super.dispose();
}

7. 处理权限

在某些 Android 设备上,可能需要请求 FOREGROUND_SERVICE 权限。你可以在 AndroidManifest.xml 中添加以下权限:

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

8. iOS 配置

对于 iOS 应用,你需要在 Info.plist 中添加以下键值对,以允许应用在后台播放音频:

<key>UIBackgroundModes</key>
<array>
  <string>audio</string>
</array>
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!