我在https://github.com/zmxv/react-native-sound/wiki/API查找了setSpeakerphoneOn的文档,其中指出您只需要向其中传递一个布尔值。我要实现的目标是有一个切换按钮,用于打开和关闭语音邮件文件的setSpeakerphoneOn。
这是我的代码段:
...
play = async () => {
if (this.sound) {
this.sound.play(this.playComplete)
this.setState({playState: 'playing'})
} else {
const { id, userCredential, contentUrl } = this.props
const voiceMailURL = `${contentUrl}/content/voicemail/get?msgId=${id}&token=${userCredential.access_token}`
this.sound = new Sound(voiceMailURL, '', (error) => {
if (error) {
Alert.alert('Notice', 'audio file error. (Error code : 1)')
this.setState({playState: 'paused'})
} else {
this.setState({playState: 'playing', duration: this.sound.getDuration()})
this.state.useEarPiece ? this.sound.setSpeakerphoneOn(true) : this.sound.setSpeakerphoneOn(true)
this.sound.play(this.playComplete)
}
})
}
}
playComplete = (success) => {
if (this.sound) {
if (success) {
} else {
Alert.alert('Notice', 'audio file error. (Error code : 2)')
}
this.setState({playState: 'paused', playSeconds: 0})
this.sound.setCurrentTime(0)
}
}
toggleUseEarPiece = () => {
this.setState({
useEarPiece: !this.state.useEarPiece
})
}
render () {
...
<View style={{flexDirection: 'row', justifyContent: 'center'}}>
{this.state.playState === 'playing' &&
<TouchableOpacity style={{marginHorizontal: 20}} onPress={this.pause}>
<Icon color='#000' name='ios-pause' size={20} type='ionicon' />
</TouchableOpacity>}
{this.state.playState === 'paused' &&
<TouchableOpacity style={{marginHorizontal: 20}} onPress={this.play}>
<Icon color='#000' name='md-play' size={20} type='ionicon' />
</TouchableOpacity>}
</View>
...
<TouchableOpacity onPress={this.toggleUseEarPiece}>{speaker}</TouchableOpacity>
}
答案 0 :(得分:0)
您要咯咯地笑,但是代码中的这一行可能有错:
this.state.useEarPiece ? this.sound.setSpeakerphoneOn(true) : this.sound.setSpeakerphoneOn(true);