React native react native audio toolkit,iPlay不工作
以上是我缩减到的最低代码,音频曲目确实播放,但是console.log(Player.isplay)总是返回“false”,但音频文件正在运行。任何关于为什么这不起作用的信息。我只能怀疑它与MediaState有关,但没有成功地使任何东西起作用。如果您有使用此软件包的经验,我们将非常感谢您的意见React native react native audio toolkit,iPlay不工作,react-native,React Native,以上是我缩减到的最低代码,音频曲目确实播放,但是console.log(Player.isplay)总是返回“false”,但音频文件正在运行。任何关于为什么这不起作用的信息。我只能怀疑它与MediaState有关,但没有成功地使任何东西起作用。如果您有使用此软件包的经验,我们将非常感谢您的意见 文档:编辑:固定和测试;答案是我的原创和马哈茂德的答案的结合 如果您在文档上方查看play方法,您将看到prepare(函数回调)的文档。其中指出: …否则,调用play()时会准备好文件,这可能会导致
文档:编辑:固定和测试;答案是我的原创和马哈茂德的答案的结合 如果您在文档上方查看
play
方法,您将看到prepare(函数回调)
的文档。其中指出:
…否则,调用play()时会准备好文件,这可能会导致较小的延迟
这意味着,如果您在调用play()
之后立即检查.isplay
属性,则无法保证在执行console.log(Player.isplay)
时文件确实正在播放
还有第二个问题,.isplay
不是Player
类的静态属性,不管它在文档中是如何显示的。它实际上是播放音频文件需要创建的播放器
实例的属性
如果您希望看到.isplay
确实工作正常,一个可能的检查是在传递到.play()
的回调函数中运行代码,如文档所示:
播放(函数?回调)
开始播放
如果给出回调,则在播放开始时调用回调
因此,一个简单的示例是这样编写示例代码(保存创建的实例,然后登录回调):
我创建了一个新项目来测试这一点,如果您运行上述代码,您将看到以下打印出来的内容说明了问题:
componentDidMount(){
const p = new Player("some_audio_file.mp3").play(() => console.log('in callback', p.isPlaying));
console.log('immediately after play', p.isPlaying);
}
isplay
不是组件播放器中的静态方法,因此您不能使用Player。isplay
,您可以从该播放器的创建实例(对象)中获取isplay
尝试保留播放器对象的引用,然后访问其子对象:
this.player=新播放器(“some\u audio\u file.mp3”).play()
然后记录:
console.log(this.player.isplay)
太棒了!顺便说一句,我目前在iOS上使用RN音频工具包时遇到了一个奇怪的问题。。它停止在随机的地方玩,并且怀疑你以前是否遇到过这个问题?
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