I have an app, that opens a webview to a website of mine. This website opens the rear camera to take a picture. I can get it done until there, but by default the camera selected is not the preferred one. In my Samsung S10, the camera opened is the wide angle, which is very inconvenient.
How could I select the best camera? Does anybody know a workaround?
In the desktop or mobile chrome I get the labels when executing navigator.mediaDevices.enumerateDevices()
but in the webview are empty.
This is my webrtc function:
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;
...
And my app webview settings:
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();
}*/
}
});
}
...