React native 在agora不工作的情况下进行本机反应。可设置扬声器()

React native 在agora不工作的情况下进行本机反应。可设置扬声器(),react-native,react-native-android,agora.io,React Native,React Native Android,Agora.io,我正在和阿格拉做一个项目。在我的旧android版本5(lolipop)中运行良好,但在我的新android vivo版本8.1.0(oreo)中不工作 正如agora医生所说,我过去经常在扬声器和接收器之间切换 rtcEngine.setEnableSpeakerphone(true) -> for speakerphone rtcEngine.setEnableSpeakerphone(false) -> for receiver 这是我下面初始化RTC引擎的代码 co

我正在和阿格拉做一个项目。在我的旧android版本5(lolipop)中运行良好,但在我的新android vivo版本8.1.0(oreo)中不工作

正如agora医生所说,我过去经常在扬声器和接收器之间切换

  rtcEngine.setEnableSpeakerphone(true) -> for speakerphone
  rtcEngine.setEnableSpeakerphone(false) -> for receiver
这是我下面初始化RTC引擎的代码

const rtcEngine = await RtcEngine.create(appId)
rtcEngine.addListener('UserJoined', (uid, elapsed) => { })
rtcEngine.addListener('UserMuteAudio', (uid, reason) => { })
rtcEngine.addListener('UserOffline', (uid, reason) => { })
rtcEngine.joinChannel(appId, channelName, null, 0)
rtcEngine.muteLocalAudioStream(mute)
rtcEngine.setEnableSpeakerphone(speaker)
这是关于如何切换值的

<TouchableOpacity style={styles.footerBtnContainer} onPress={ () => { setSpeaker(!speaker); }} >
    <IonIcon name="volume-mute-outline" style={speaker?styles.footIconOn:styles.footIconOff} />
</TouchableOpacity>
还有我的package.json

"dependencies": {
"@react-native-community/masked-view": "^0.1.10",
"@react-navigation/native": "^5.8.2",
"@react-navigation/stack": "^5.11.1",
"agora-rn-uikit": "^3.0.1",
"react": "16.13.1",
"react-native": "0.62.2",
"react-native-agora": "^3.1.2",
"react-native-gesture-handler": "^1.8.0",
"react-native-mo-fs": "^0.1.24",
"react-native-reanimated": "^1.13.1",
"react-native-safe-area-context": "^3.1.8",
"react-native-screens": "^2.12.0",
"react-native-vector-icons": "^7.1.0"
 },

每次需要调用
setEnableSpeakerphone
方法在扬声器和听筒之间切换。我假设您正试图使用状态值在它们之间进行更改。对于您的代码,它仅在初始化RTC引擎时执行一次。当你按下按钮翻转状态时,该功能不会被执行——因此没有效果。您必须编辑代码才能每次调用
setEnableSpeakerphone
。我建议如下定义一个函数:

const toggleDevice = async () => {
  await this._engine?.setEnableSpeakerphone(!speaker);
  setSpeaker(speakerValue => !speakerValue)
};
编辑按钮以调用toggleDevice函数-
onPress={toggleDevice}

const toggleDevice = async () => {
  await this._engine?.setEnableSpeakerphone(!speaker);
  setSpeaker(speakerValue => !speakerValue)
};