Реализация navigator.mediaDevices.getDisplayMedia() для совместного использования экрана в веб-просмотре Android.Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Реализация navigator.mediaDevices.getDisplayMedia() для совместного использования экрана в веб-просмотре Android.

Сообщение Anonymous »

Я проводил несколько тестов с использованием WebView и понял, что WebRTC для Android не реализует функцию navigator.mediaDevices.getDisplayMedia() для доступа к дисплею системы.
Я пытаюсь реализовать 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"

/>
После создания этого фейка, когда я пытаюсь получить доступ к приложению на основе Jitsi, появляется кнопка «Поделиться», но выдает ошибку, когда я пытаюсь начать делиться, потому что я не реализовал проецирование экрана
Изображение

Есть ли какой-нибудь способ для Webview предоставить общий доступ к системному экрану?


Подробнее здесь: https://stackoverflow.com/questions/785 ... sharing-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»