我正在尝试做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:尝试WebView以Foreground Service仍然相同的结果进行初始化。
更新4:使用Chrome(76.0.3809.132)在https://appr.tc/上尝试进行了演示调用。观察到相同的结果。
更新5:尝试使用Firefox进行演示调用,并且效果很好,这让我认为这是Chromium错误?
更新6:填写错误报告
由于 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 的另一个选择是制作您自己的插件,如下所示:
| 归档时间: |
|
| 查看次数: |
409 次 |
| 最近记录: |