【问题标题】:How to mute mic in iOS so that yellow mic icon disappears如何在 iOS 中将麦克风静音以使黄色麦克风图标消失
【发布时间】:2021-03-06 20:23:42
【问题描述】:

我正在开发一个使用 Janus WebRTC 服务器创建语音聊天室的颤振应用程序。该应用程序具有使麦克风静音和取消静音的按钮。但在 iOS 上,即使我已经通过禁用音轨将麦克风静音,原生图标仍然存在。

我的麦克风静音方式是这样的。

myStream.getAudioTracks().forEach((track){
   track.enabled = false;
});

我也试过了:

myStream.getAudioTracks().forEach((track){
   track.setMicrophoneMute(true);
});

即使它可以工作并且麦克风已静音。原生麦克风黄色图标不断出现。 Screenshot Here

我正在使用来自以下来源的软件包 janus_client 的修改版本:https://github.com/shivanshtalwar0/flutter_janus_client

【问题讨论】:

  • 你不能。这是 iOS 14 中的一项隐私功能。
  • @Julia 但是当我尝试在其他应用程序(即缩放)上静音时,图标确实消失了。

标签: flutter dart webrtc janus


【解决方案1】:

如果您改为停止轨道,它应该可以工作。

myStream.getAudioTracks().forEach((track){
   track.stop();
});

这将使图标消失,但也会停止流。如果您想再次取消静音,这当然不是很好。幸运的是,使用相同的参数调用getUserMedia() 通常不会触发另一个用户提示。这仍然不理想,因为取消静音将不再是即时的,但它目前似乎是摆脱图标的唯一解决方法。

【讨论】:

  • 可能值得一提的是,可以使用 RTCRtpSender.replaceTrack 重新启用发送麦克风
  • 我对这个解决方案的问题是我得到的 MediaStreamTrack 没有这个 stop() 方法。但是,我可以使用 dispose() 方法完全处理轨道,该方法通过 Flutter 方法通道发送“trackDispose”方法。我也已经尝试过这种方法,图标仍然显示
  • 我什至将我的 Stream audioTracks 列表设置为一个空列表,但图标仍然显示为好像正在使用麦克风。
  • 感谢 Philipp Hancke 添加该评论。我错过了那部分。
  • 抱歉 PotatoBoy,我不知道 Flutter 中有 WebRTC 包装器。我以为它只是暴露了浏览器的本机实现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-26
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多