亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一分鐘后音頻停止錄制

一分鐘后音頻停止錄制

慕的地8271018 2023-05-17 15:41:19
我正在嘗試使用 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" />在活動中,我授予以下麥克風的權限WebChromeClient:@Overridepublic 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;outDevice2019-08-06 17:18:47.266 4332-22405/? V/APM_AudioPolicyManager: getNewOutputDevice() selected device 22019-08-06 17:18:47.266 4332-22405/? V/APM_AudioPolicyManager: ### curdevice : 22019-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:嘗試WebView以Foreground Service相同的結果進行初始化。更新 4:嘗試使用 Chrome(76.0.3809.132)在https://appr.tc/上進行演示調用。觀察到相同的結果。更新 5:嘗試使用 Firefox 進行演示調用,它完美無缺地工作,這讓我認為這是 Chromium 的錯誤嗎?更新 6:填寫錯誤報告
查看完整描述

3 回答

?
largeQ

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);

    }

}


查看完整回答
反對 回復 2023-05-17
?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

在通話期間,您應該努力在該活動中保持屏幕開啟,并防止屏幕變暗。

用這個:

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

在你的電話完成后:

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


查看完整回答
反對 回復 2023-05-17
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

Android 會在離開前臺幾分鐘后自動銷毀您的活動,這將導致錄音關閉。

我在 android 上使用 webrtc,如果你想在 Android 上使用 webrtc 創建通話和視頻通話,我建議使用本機 webrtc 并在前臺服務上實現與 webrtc 相關的所有內容。前臺服務將確保您的記錄器和相機在活動被破壞時繼續運行事件。

查看完整回答
反對 回復 2023-05-17
  • 3 回答
  • 0 關注
  • 243 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號