一分钟后音频停止录制

Mus*_*sir 11 java android

我正在尝试做WebRTC,但一切正常,但似乎存在问题,即,如果屏幕保持关闭状态超过一分钟,音频将停止录制,这意味着来自设备音频将停止,直到我将屏幕打开一次再次

我尝试了什么?

1)我尝试设置webSettings.setMediaPlaybackRequiresUserGesture(false);它对问题没有帮助。

2)我还尝试wakelock在正在做WebRTC的活动中添加一个,但它也没有起作用。

以下是清单中声明的​​权限:

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
Run Code Online (Sandbox Code Playgroud)

在此活动中,我正在授予麦克风的权限WebChromeClient

@Override
public void onPermissionRequest(final PermissionRequest request) {
    request.grant(request.getResources());
}
Run Code Online (Sandbox Code Playgroud)

我想要的是?

我希望能够继续通话而不会打扰用户重新打开屏幕。请指出正确的方向。

谢谢!

更新:我尝试在Chrome中加载WebRTC网址,并且发生了同样的事情,即音频停止从我的设备记录。

更新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)
Run Code Online (Sandbox Code Playgroud)

更新3:尝试WebViewForeground Service仍然相同的结果进行初始化。

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

更新5:尝试使用Firefox进行演示调用,并且效果很好,这让我认为这是Chromium错误?

更新6:填写错误报告

Ari*_*era 2

由于 Android 上的 WebRTC 存在此问题,请检查您的 Chrome/Android 版本: 问题 513633:Android 上的 Chrome 中的 WebRTC 呼叫将在屏幕关闭后 1 分钟被切断

Chrome 默认支持 WebRTC,所以......它应该可以工作。

顺便说一句,如果你不需要 WebRtc 或者想尝试在后台服务中实现......

兴趣读物:

1 -屏幕关闭时录制

正如帖子所说,请记住:

致电:

startForeground();
Run Code Online (Sandbox Code Playgroud)

使用START_STICKY:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
       return START_STICKY;
}
Run Code Online (Sandbox Code Playgroud)

2 -如何实现录音机

正如帖子所说,请记住权限:

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

Apache Cordova 的后台服务

使用 cordova 和 webview,您还需要使用插件来将代码作为服务在后台运行。看看这个链接: cordova 插件

Cordova 的另一个选择是制作您自己的插件,如下所示:

自定义插件-后台录像机