Я пытаюсь реализовать navigator.mediaDevices.getDisplayMedia() в веб-просмотре Android с помощью реакции-native-webview, чтобы иметь возможность использовать совместное использование экрана в веб-приложениях для видеоконференций, таких как Google Meet, Zoom, Teams и Jitsi.
Я создал подделку navigator.mediaDevices.getDisplayMedia(), чтобы попытаться обойти ошибки, когда приложения пытаются получить доступ к этой функции:
Код: Выделить всё
const debugging = `
sessionStorage.clear()
function createMockTrack(kind) {
return {
kind,
label: 'Mock Track',
enabled: true,
id:'2',
readyState: 'live',
stop: () => console.log(''),
};
}
// Create a fake MediaStream
function createMockMediaStream() {
return {
id: 'mock-stream-id',
active: true,
getTracks: () => [createMockTrack('video')],
getVideoTracks: () => [createMockTrack('video')],
getAudioTracks: () => [],
addTrack: (track) => console.log(''),
removeTrack: (track) => console.log(''),
getTrackById: (id) => createMockTrack('video'),
};
}
// Fake getDisplayMedia function
function fakeGetDisplayMedia(constraints) {
return new Promise((resolve, reject) => {
// Simulate asynchronous behavior
setTimeout(() => {
console.log('Fake getDisplayMedia called with constraints:', constraints);
// Resolve with a mock MediaStream object
resolve(createMockMediaStream());
}, 1000);
});
}
// Override the original getDisplayMedia function
if (navigator.mediaDevices) {
navigator.mediaDevices.getDisplayMedia = fakeGetDisplayMedia;
} else {
navigator.mediaDevices = {
getDisplayMedia: fakeGetDisplayMedia,
};
}
// const consoleLog = (type, log) => window.ReactNativeWebView.postMessage(JSON.stringify({'type': 'Console', 'data': {'type': type, 'log': log}}));
// console = {
// log: (log) => consoleLog('log', log),
// debug: (log) => consoleLog('debug', log),
// info: (log) => consoleLog('info', log),
// warn: (log) => consoleLog('warn', log),
// error: (log) => consoleLog('error', log),
// };
`;
Код: Выделить всё
console.log(event)}
userAgent="Mozilla/5.0 (X11; Linux x86_64; rv:125.0) Gecko/20100101 Firefox/125.0"
/>

Есть ли какой-нибудь способ для Webview предоставить общий доступ к системному экрану?
Подробнее здесь: https://stackoverflow.com/questions/785 ... sharing-in