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 相關的所有內容。前臺服務將確保您的記錄器和相機在活動被破壞時繼續運行事件。
添加回答
舉報