react-native-android - 订阅音频流 OpenTok 时如何更改音频输出 - ReactNative
解决方案
在这个问题上,我已经为这两个平台编写了本机函数。目前,我还没有想出更好的方法来解决它,所以你可以试试我的方法。
我想你已经知道如何为这两个平台编写本机模块,所以我只会给你主要的东西。
对于 iOS:
RCT_EXPORT_METHOD(switchAudioOutput: (BOOL *)isSpeckerPhoneOn) {
NSError* error;
AVAudioSession* session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
[session setMode:AVAudioSessionModeVoiceChat error:&error];
RCTLogInfo(@"Setting audio output");
if (isSpeckerPhoneOn) // Enable speaker
{
[session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error];
RCTLogInfo(@"Enable Speaker");
}
else // Disable speaker
{
[session overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:&error];
RCTLogInfo(@"Disable Speaker");
}
[session setActive:YES error:&error];
}
对于安卓:
@ReactMethod
public void switchAudioOutput(Boolean isSpeckerPhoneOn) {
AudioManager audioManager = (AudioManager)this.mContext.getSystemService(this.mContext.AUDIO_SERVICE);
if (isSpeckerPhoneOn) {
audioManager.setSpeakerphoneOn(true);
} else {
audioManager.setSpeakerphoneOn(false);
}
}
希望能帮助你走出困境,祝你好运!
推荐阅读
- python - python将字符串(Mar18)转换为日期格式(201803)
- python - EOFError - 使用 ftplib 上传 .csv 文件
- javascript - AngularJs - 在表格中设置单选按钮值
- asp.net-mvc - 在类库中引用 MVC Core RemoteAttribute
- ruby-on-rails - 如何编写自定义验证以防止记录具有所有空属性?
- c# - 使用c#替换word文档的标题
- php - 找到php内存泄漏的最佳方法?
- java - 房间:无法开始将 ID 添加到意图的活动
- java - 具有读写模式的 RandomAccessFile 过滤器在 linux 环境下不起作用
- php - 试图将变量传递到 URL PHP