首页 > 解决方案 > 音频在一分钟后停止录制

问题描述

我正在尝试做 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:尝试WebViewForeground Service相同的结果进行初始化。

更新 4:尝试使用 Chrome(76.0.3809.132)在https://appr.tc/上进行演示调用。观察到同样的结果。

更新 5:使用 Firefox 尝试了一个演示调用,它工作得非常完美,这让我认为这是一个 Chromium 错误?

更新 6:填写错误报告

标签: javaandroid

解决方案


您应该努力在通话期间保持屏幕在该活动中,并防止变暗。

用这个:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

在您的通话结束后:

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);


推荐阅读