webView getUserMedia =>Could not start video source
Bonjour,
J'ai du HTML, CSS, JS qui fonctionne sur un PC avec fireFox pour afficher le flux vidéo d'une webCam et prendre une photo pour l'envoyer en PHP.
Si j'essaie d'utiliser la même chose dans un webView Android, j'ai l'erreur
Citation:
NotReadableError: Coulnd not start video source
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| function photo()
{ var video=document.getElementById("video"),
canvas=document.getElementById("canvas"),
photo=document.getElementById("photo"),
take=document.getElementById("msgButtonPhotoTake"),
send=document.getElementById("msgButtonPhotoTake");
navigator.mediaDevices.getUserMedia({video:true})
.then(function(stream)
{ video.srcObject=stream;
video.play();
take.addEventListener("click",function()
{ var draw=canvas;
draw.width=video.videoWidth;
draw.height=video.videoHeight;
canvas.getContext('2d').drawImage(video,0,0,video.videoWidth,video.videoHeight);
var data=canvas.toDataURL('image/png');
photo.setAttribute('src',data);
draw.toBlob(function(blob)
{ var data=new FormData();
data.append('upimage', blob);
console.log("Photo->"+photo.src);
mailSend("mailVisual",[photo.src]);
});
});
})
.catch(function(err)
{ alert(err);
});
}; |
Java (j'ai enlevé ce qui ne concerne pas le problème rencontré) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| package ...;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.os.BatteryManager;
import android.os.Build;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.telephony.SmsManager;
import android.webkit.ConsoleMessage;
import android.webkit.JavascriptInterface;
import android.webkit.PermissionRequest;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Toast;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.Locale;
public class MainActivity extends AppCompatActivity
{ private WebView webview;
private final int REQ_CODE_SPEECH_INPUT=1;
public static ArrayList<String> sttResults;
TTSManager ttsManager = null;
@Override
protected void onCreate(Bundle savedInstanceState)
{ super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView=(WebView) findViewById(R.id.webview);
WebSettings webSettings = webView.getSettings();
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
android.util.Log.d("WebView", Integer.toString(consoleMessage.lineNumber())+"->"+consoleMessage.message());
return true;
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public void onPermissionRequest(PermissionRequest request) {
request.grant(request.getResources());
}
});
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
webSettings.setAppCacheEnabled(false);
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
//webview.addJavascriptInterface(new JavaScriptInterface(), "os_android");
webView.loadUrl("URL du site");
}
} |
Manifest :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package=...>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:networkSecurityConfig="@xml/network_security_config"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.camera.front" android:required="true" />
<uses-feature android:name="android.permission.write_external_storage" />
<uses-feature android:name="android.permission.read_external_storage" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.webkit.PermissionRequest" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
</manifest> |
Merci par avance et bon confinement :-(