React Native 应用程序开发人员构建各种应用程序,其中一些涉及实现音乐播放列表。如果您计划使用 React Native 构建一个音频播放器,您无疑需要一个播放列表实现,其中包括一个可管理的音乐曲目队列,该队列对用户可见或作为后台服务运行以按特定顺序播放音乐曲目。

音乐播放列表通常连接到播放所选音乐曲目的音乐播放器实现。如何修复Windows更新错误0x800b0003?从用户的角度来看,他们应该能够在播放列表中添加、删除、随机播放和重新排序音乐曲目。从开发人员的角度来看,dpi转换器是什么?推荐5款DPI转换器软件他们还应该能够以编程方式更新播放列表。

在 React Native 中创建和管理播放列表有几种可能的方法。我们可以在没有第三方库的情况下从头开始构建播放列表和播放器,但这很耗时。Windows11如何设置以保护隐私?我们也可以使用库来播放音乐曲目,并根据音乐播放器事件从头开始开发音乐队列。如何在Windows10上启用Gmail深色模式?我们可以使用功能齐全的音乐曲目播放器库进一步加快开发过程。

该库提供功能齐全的 API,用于在 React Native 如何修复 Windows 10 上找不到 Rockalldll.dll 的问题?中创建基于播放列表的音乐应用程序。如何修复Windows10滚动问题?windows10滚动条为什么自己往下跑在本教程中,如何在Windows10上查看YouTube历史评论记录?我将通过实现一个包含可见播放列表的音乐播放器来解释功能。如何修复Spotify指定用户没有有效配置文件?react-native-track-playerreact-native-track-player

跳跃前进:

突出特点react-native-track-player

react-native-track-player教程

突出特点react-native-track-player

在我们开始实用教程之前,让我们检查一下库的功能。

该库具有以下用于构建音乐应用程序的有用功能:

对开发者友好的播放器状态管理

该库由两个逻辑模块组成:

音乐播放器模块

播放列表实现

音乐播放器模块播放播放列表中的曲目。这个库提供了函数和 React Hooks 来控制音乐播放器的状态和订阅播放器事件。这些对开发人员友好的播放器状态管理功能使跟踪播放器 UI 集成变得容易。此外,基于事件的 React Hooks 降低了 React 状态管理要求的复杂性。

简单的播放列表管理

该库为开发人员提供了一个简单的 API 来管理音乐曲目队列。您可以通过不言自明的功能以编程方式添加、删除、重复和跳过音乐曲目。使用此库可以轻松创建您自己的基于播放列表的音乐播放器。

性能优先的原生库核心

对于播放列表管理和播放,这个库使用两个本地模块:

KotlinAudio:Android 的跟踪播放器实现

SwiftAudioEx:iOS 的跟踪播放器实现

JavaScript实现调用上述原生模块进行音乐播放和播放列表管理,因此该库致力于为您的音乐应用程序提供原生性能。播放列表存储在最佳本机数据结构中以获得更好的性能(即Kotlin 中的LinkedList)。react-native-track-player

该库提供对开发人员友好、一致的异步 API,因此您可以轻松地在 React Native 应用程序代码库中使用现代模式。async/await

平台支持和灵活的平台特定配置

该库适用于 Android、iOS 和 Windows 平台。它使用WinRT 媒体播放 API在 Windows 上播放音乐内容,因此您可以使用此包构建现代 Windows 应用程序!

轨道播放器库从不通过仅提供通用的跨平台 API 来限制开发人员——它为高级用例提供特定于平台的配置。例如,它可以让您更改 Android 上的通知面板播放器图标。

react-native-track-player教程

现在,我们将通过开发带有播放列表的音乐播放器应用程序来学习如何使用该库。在构建音乐播放器应用程序时,我将向您展示一些额外的示例代码片段,以进一步解释库 API 函数。react-native-track-player

将库与 React Native 项目集成

从安装包开始。首先,创建一个新的 React Native 项目来构建音乐播放器:react-native-track-player

npx react-native init MusicTrackPlayer

cd MusicTrackPlayer

接下来,运行新创建的应用程序以确保一切正常:

npx react-native run-android

# --- or ---

npx react-native run-ios

现在,安装库:

npm install react-native-track-player

# --- or ---

yarn add react-native-track-player

我正在 Android 上开发这个示例应用程序,因此运行上面的命令足以设置库。但是,在 iOS 上,您需要手动安装原生依赖项:

cd ios && pod install

再次构建应用程序并运行它以验证包安装状态。

注意:在 Android 上,如果Gradle 构建任务失败,请在您的. 有关详细信息,请参阅此参考资料。:app:checkDebugAarMetadatacompileSdkVersion = 33android/build.gradle

创建一个简单的轨道播放器

让我们开始使用音轨播放器库播放音乐。在为播放列表实现 UI 组件之前,我们将以编程方式创建播放列表以了解播放列表管理 API。

首先,在您的应用程序源目录中创建一个名为的新目录,并将这些音乐曲目(来自Pixabay Musicassets的三个 MP3 音频文件)下载到其中。

在初始化曲目播放器实例以播放您下载的 MP3 文件之前,我们需要定义几个服务来帮助我们配置、初始化和控制曲目播放器实例。创建一个名为的新文件并添加以下代码:trackPlayerServices.js

import TrackPlayer, {

AppKilledPlaybackBehavior,

Capability,

RepeatMode,

Event

} from 'react-native-track-player';

export async function setupPlayer() {

let isSetup = false;

try {

await TrackPlayer.getCurrentTrack();

isSetup = true;

}

catch {

await TrackPlayer.setupPlayer();

await TrackPlayer.updateOptions({

android: {

appKilledPlaybackBehavior:

AppKilledPlaybackBehavior.StopPlaybackAndRemoveNotification,

},

capabilities: [

Capability.Play,

Capability.Pause,

Capability.SkipToNext,

Capability.SkipToPrevious,

Capability.SeekTo,

],

compactCapabilities: [

Capability.Play,

Capability.Pause,

Capability.SkipToNext,

],

progressUpdateEventInterval: 2,

});

isSetup = true;

}

finally {

return isSetup;

}

}

export async function addTracks() {

await TrackPlayer.add([

{

id: '1',

url: require('./assets/fluidity-100-ig-edit-4558.mp3'),

title: 'Fluidity',

artist: 'tobylane',

duration: 60,

}

]);

await TrackPlayer.setRepeatMode(RepeatMode.Queue);

}

export async function playbackService() {

// TODO: Attach remote event handlers

}

上面的代码实现了三个服务:

setupPlayer:仅使用多个播放器功能和默认行为(即应用程序终止行为)初始化一次轨道播放器实例

addTracks:从捆绑资源中将一首曲目添加到当前播放列表

playbackService:此服务接收远程事件。我们将在接下来的部分讨论播放服务事件,所以让我们暂时将此功能留空

在这里,我们通过函数从应用程序包中加载一个 MP3 文件require。该库支持通过http协议加载远程音频文件和通过协议加载本地音频文件file。

接下来,我们需要将上述函数注册playbackService为播放事件处理程序。在您的文件中使用以下代码:index.js

import { AppRegistry } from 'react-native';

import TrackPlayer from 'react-native-track-player';

import App from './App';

import { name as appName } from './app.json';

import { playbackService } from './trackPlayerServices';

AppRegistry.registerComponent(appName, () => App);

TrackPlayer.registerPlaybackService(() => playbackService);

现在,我们可以开始构建应用程序 UI,因为我们的轨道播放器服务已准备就绪。将以下代码添加到您的文件中:App.js

import React, { useEffect, useState } from 'react';

import {

SafeAreaView,

StyleSheet,

View,

Button,

ActivityIndicator,

} from 'react-native';

import TrackPlayer from 'react-native-track-player';

import { setupPlayer, addTracks } from './trackPlayerServices';

function App() {

const [isPlayerReady, setIsPlayerReady] = useState(false);

useEffect(() => {

async function setup() {

let isSetup = await setupPlayer();

const queue = await TrackPlayer.getQueue();

if(isSetup && queue.length <= 0) {

await addTracks();

}

setIsPlayerReady(isSetup);

}

setup();

}, []);

if(!isPlayerReady) {

return (

);

}

return (