3 回答

TA贡献2039条经验 获得超8个赞
显然,这不是一项常见的任务,因为您的所有实施都只是一个WebView. 这很难与 Android 内部如此长的生存任务和生命周期保持一致。对于前。我们所做的每个VoIP应用程序,都有后台服务,以保持连接有效,并带有唤醒锁。这只是确保通话稳定性的一种方式。
但是,我认为您可以尝试这样做。通过WebView在 Service 中管理您的工作。为此,您可以考虑将一些调用逻辑移到另一个视图中,然后开始新的Service和创建新的Window。这将确保您Window在Service. 好像。
public class ServiceWithWebView extends Service {
@Override
public void onCreate() {
super.onCreate();
final WindowManager windowManager = (WindowManager)
getSystemService(WINDOW_SERVICE);
params = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY);
final LinearLayout view = new LinearLayout(this);
view.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout
.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));
WebView wv = new WebView(this);
wv.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout
.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
view.addView(wv);
wv.loadUrl("http://google.com");
windowManager.addView(view, params);
}
}

TA贡献1816条经验 获得超4个赞
在通话期间,您应该努力在该活动中保持屏幕开启,并防止屏幕变暗。
用这个:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
在你的电话完成后:
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

TA贡献1875条经验 获得超5个赞
Android 会在离开前台几分钟后自动销毁您的活动,这将导致录音关闭。
我在 android 上使用 webrtc,如果你想在 Android 上使用 webrtc 创建通话和视频通话,我建议使用本机 webrtc 并在前台服务上实现与 webrtc 相关的所有内容。前台服务将确保您的记录器和相机在活动被破坏时继续运行事件。
添加回答
举报