Я разработал приложение, которое открывает камеру и добавляет поток камеры к html тегу видео внутри android webview javascript кода для открытия камеры navigator.mediaDevices.getUserMedia({video:true,audio:true}).then(function(stream){$("video")[0].srcObject = stream})
Проблемы с моим приложением заключаются в том, что всякий раз, когда действие возобновляется потоки камеры удаляются из видео-тега веб-просмотра и отображаются поверх кнопки воспроизведения только серая кнопка воспроизведения.
Android код выглядит следующим образом
public class CameraStreamActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_camera);
public void initializeWebView(){
mWebView = view.findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
mWebView.getSettings().setMediaPlaybackRequiresUserGesture(false);
mWebView.addJavascriptInterface(new
JavaScriptInterface(getActivity()),"Android");
// mWebView.getSettings().setLoadWithOverviewMode(true);
WebView.setWebContentsDebuggingEnabled(true);
if(Build.VERSION.SDK_INT >= 19){
mWebView.setLayerType(View.LAYER_TYPE_HARDWARE,null);
}
else
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE,null);
}
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
mWebView.setWebContentsDebuggingEnabled(true);
}
mWebView.setWebChromeClient(new WebChromeClient(){
@Override
public void onPermissionRequest(PermissionRequest request) {
request.grant(request.getResources());
}
}
}
}
permissions used in AndroidManifest.xml
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature
android:name="android.hardware.camera"
android:required="true" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.audio.low_latency" />
<uses-feature android:name="android.hardware.audio.pro" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"
/>
<uses-permission android:name="android.permission.MICROPHONE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />