gpt4 book ai didi

react-native-audio-toolkit, isPlaying 不工作

转载 作者:行者123 更新时间:2023-12-02 16:55:05 30 4
gpt4 key购买 nike

import React from "react";
import { Player } from "@react-native-community/audio-toolkit";


export default class RNAudiotoolkit extends React.Component {
componentDidMount(){
new Player("some_audio_file.mp3").play();
console.log(Player.isPlaying);
}
}

以上是我精简到的最少代码,音轨确实可以播放,但是 console.log(Player.isPlaying) 总是返回“false”,但音频文件正在运行。关于为什么这不起作用的任何输入。我只能怀疑它与 MediaStates 有关,但没有成功地使任何工作正常进行。如果您有使用此软件包的经验,我们将不胜感激。

文档:https://github.com/react-native-community/react-native-audio-toolkit/blob/master/docs/API.md

最佳答案

编辑:已修复并经过测试;答案是我原来的答案和 mAhMoUdDaFeR 的答案的组合。

如果您在上方查看play 方法的文档,您将看到prepare(Function callback) 的文档。其中,它指出:

...Otherwise the file is prepared when calling play() which may result in a small delay.

这意味着,如果您在调用 play() 后立即检查 .isPlaying 属性,则不能保证文件确实按时间播放你的 console.log(Player.isPlaying) 执行。

还有第二个问题,即 .isPlaying 不是 Player 类的静态属性,尽管它在文档中是这样显示的。它实际上是 Player 实例的一个属性,您需要创建它来播放音频文件。

如果您想查看 .isPlaying 确实正常工作,一个可能的检查是在传递给 .play() 的回调函数中运行您的代码,作为文档显示:

play(Function ?callback)

Start playback.

If callback is given, it is called when playback has started.

所以一个简单的例子就是像这样编写你的示例代码(保存创建的实例然后登录回调):

componentDidMount(){
const p = new Player("some_audio_file.mp3").play(() => console.log('in callback', p.isPlaying));
console.log('immediately after play', p.isPlaying);
}

我创建了一个新项目来对此进行测试,如果您运行上面的代码,您将看到打印出的以下内容说明了该问题:

immediately after play false
in callback true

关于react-native-audio-toolkit, isPlaying 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56838796/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com