java - 音频在一分钟后停止录制
问题描述
我正在尝试做 WebRTC,一切正常,但似乎有一个问题,即如果屏幕保持关闭超过一分钟,音频停止录制,这意味着来自设备的音频停止,直到我打开屏幕一次再次。
我试过什么?
1)我试过设置webSettings.setMediaPlaybackRequiresUserGesture(false);
它对问题没有好处。
2)我也尝试wakelock
在我正在做 WebRTC 的活动中添加一个,但它也没有用。
以下是 Manifest 中声明的权限:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
在活动中,我正在授予麦克风权限WebChromeClient
:
@Override
public void onPermissionRequest(final PermissionRequest request) {
request.grant(request.getResources());
}
我想要的是?
我希望能够继续通话而不会干扰用户重新打开屏幕。请指出我正确的方向。
谢谢!
更新:我尝试在 Chrome 中加载 WebRTC url 并且发生了同样的事情,即音频停止从我的设备录制。
更新 2:当音频停止来自设备时添加日志。
2019-08-06 17:18:47.266 4332-22405/? V/APM_AudioPolicyManager: getAudioPolicyConfig: audioParam;outDevice
2019-08-06 17:18:47.266 4332-22405/? V/APM_AudioPolicyManager: getNewOutputDevice() selected device 2
2019-08-06 17:18:47.266 4332-22405/? V/APM_AudioPolicyManager: ### curdevice : 2
2019-08-06 17:18:47.307 4332-22405/? V/APM_AudioPolicyManager: AudioPolicyManager:setRecordSilenced(uid:99066, silenced:1)
2019-08-06 17:18:47.308 4332-22405/? V/APM_AudioPolicyManager: AudioPolicyManager:setRecordSilenced(uid:11556, silenced:1)
更新 3:尝试WebView
以Foreground Service
相同的结果进行初始化。
更新 4:尝试使用 Chrome(76.0.3809.132)在https://appr.tc/上进行演示调用。观察到同样的结果。
更新 5:使用 Firefox 尝试了一个演示调用,它工作得非常完美,这让我认为这是一个 Chromium 错误?
更新 6:填写错误报告
解决方案
您应该努力在通话期间保持屏幕在该活动中,并防止变暗。
用这个:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
在您的通话结束后:
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
推荐阅读
- jquery - 克隆后下拉列表未显示所有项目
- sql - 无法在连接上选择不同的值
- entity-framework - EF Core HasMany 与 OwnsMany
- javascript - 我可以使用 html、mysql 和 NODE.js 单击一个按钮来使用 2 个 POST 请求吗?
- java - 在 Netbeans 11 中启用保存时编译选项
- android - 限制重复数组列表添加的问题
- wordpress - 如何修复 wordpress 中的 .htaccess 问题
- c# - 如何将稍微复杂的场景从 -> 映射到成员场景
- data-warehouse - 如何对链接到具有不同粒度级别的多个事实的维度表进行建模?
- c# - 从get set方法理解功能