Получение метки устройства в Webview WebRTC - PullRequest
0 голосов
/ 09 марта 2020

У меня есть приложение, которое открывает веб-просмотр моего веб-сайта. Этот сайт открывает заднюю камеру, чтобы сделать снимок. Я могу сделать это до тех пор, пока там, но по умолчанию выбранная камера не является предпочтительной. В моем Samsung S10 открытая камера имеет широкий угол, что очень неудобно.

Как выбрать лучшую камеру? Кто-нибудь знает обходной путь?

На рабочем столе или в мобильном телефоне chrome Я получаю ярлыки при выполнении navigator.mediaDevices.enumerateDevices(), но в веб-просмотре пусто.

Это мой webrt c функция:

await this.stopTracksCamera();
      let idealDevideId = undefined;
      await navigator.mediaDevices.getUserMedia({ video: true }).then(async stream => {
        this.tempStream = stream;
      });
idealDevideId = await this.scanDevices();
await this.stopTracksCamera();
      await navigator.mediaDevices.getUserMedia(constraints).then(stream => {
        this.videoDom.srcObject = stream;
...

И настройки веб-просмотра моего приложения:

WebView web = (WebView) findViewById(R.id.silt_web);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            web.setWebContentsDebuggingEnabled(true);
        }
        WebSettings webSettings = web.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setDomStorageEnabled(true);
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        webSettings.setAllowFileAccessFromFileURLs(true);
        webSettings.setAllowUniversalAccessFromFileURLs(true);
        webSettings.setPluginState(WebSettings.PluginState.ON);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            webSettings.setMediaPlaybackRequiresUserGesture(false);
        }

        web.setWebViewClient(new WebViewClient());

        web.setWebChromeClient(new WebChromeClient() {
    @Override
            public void onPermissionRequest(final PermissionRequest request) {
                Log.d(TAG, "onPermissionRequest");
                MainActivity.this.runOnUiThread(new Runnable() {
                    @TargetApi(Build.VERSION_CODES.M)
                    @Override
                    public void run() {
                        Log.d(TAG, request.getOrigin().toString());
                        /*if(request.getOrigin().toString().equals("file:///")) {*/
                            Log.d(TAG, "GRANTED");
                            request.grant(request.getResources());
                        /*} else {
                            Log.d(TAG, "DENIED");
                            request.deny();
                        }*/
                    }
                });
            }
...

1 Ответ

2 голосов
/ 09 марта 2020

Существует сообщение об ошибке в хром. https://bugs.chromium.org/p/chromium/issues/detail?id=669492

Статус говорит - WontFix (закрыто)

Может быть из-за проблем с конфиденциальностью.

...