Ref 方法
绑定一个类型为 AudioWaveformViewRef 的 ref,即可在代码中调用播放器:
tsx
import { useRef } from 'react';
import {
AudioWaveformView,
type AudioWaveformViewRef,
} from 'react-native-waveform-player';
const ref = useRef<AudioWaveformViewRef>(null);
<AudioWaveformView ref={ref} source={{ uri }} style={{ height: 56 }} />;
ref.current?.play();
ref.current?.pause();
ref.current?.toggle();
ref.current?.seekTo(0);
ref.current?.setSpeed(2);所有方法都返回 void,并立即在原生侧执行。通过 onPlayerStateChange 和 onSeek 查看结果。
| 方法 | 作用 | 受控模式下 |
|---|---|---|
play() | 开始播放。 | 设置了 playing 时无效。 |
pause() | 暂停播放。 | 设置了 playing 时无效。 |
toggle() | 暂停时播放,播放时暂停。 | 设置了 playing 时无效。 |
seekTo(positionMs) | 将播放头移动到以毫秒为单位的位置。 | 有效。 |
setSpeed(speed) | 修改播放倍速。 | 设置了 speed 时无效。 |
在网页近似演示中试试这些方法:
原生组件的网页近似效果,播放一段在浏览器中生成的短音频。布局和行为参照 iOS 实现;在设备上由原生代码绘制。
Ref 方法
事件
播放、拖动进度或点击倍速按钮,即可在这里看到事件。
play()
- 加载期间调用会被记住:音频源一就绪就开始播放,在此之前按钮持续显示加载指示器。在此之前调用
pause()会取消这次请求。 - 播放结束后(
state为ended),play()会从0重新开始。即使你在结束后调用过seekTo()或用户拖动过,也是如此。如需从其他位置继续,请先调用play(),再调用seekTo()。 - 设置了
playing时,该方法不做任何事。请改为修改playingprop。
pause() 与 toggle()
播放器已暂停时,pause() 不做任何事。toggle() 根据当前状态调用 play() 或 pause(),规则与上文相同。
seekTo(positionMs)
- 数值会取整为毫秒,负值变为
0,播放器会把结果限制在时长范围内。 - 以请求的位置触发
onSeek。 - 播放状态保持不变:正在播放的会从新位置继续,已暂停的仍保持暂停。
- 在
onLoad之前时长未知,因此位置会落在0。如需从其他位置开始,请使用initialPositionMsprop。 - 受控模式下同样有效,因为跳转与
playing或speedprops 不冲突。
setSpeed(speed)
- 修改倍速并更新倍速按钮。暂停时也可以调用,恢复播放时生效。
- 原生播放器会把倍速限制在 0.25 到 4 之间,但倍速按钮和
onPlayerStateChange显示的是你传入的值。请把数值保持在该范围内。 - 该值不必在
speeds中。下次点击倍速按钮时,会切换到speeds中第一个比它大的值,若没有则回到第一个值。 - 设置了
speed时,该方法不做任何事。请改为修改speedprop。