cla*_*182 5 javascript camera android android-webview
我正在使用WebRTC开发一个Android视频应用,我想增加从前置摄像头到后置摄像头更改的功能。为了练习此功能,我使用了以下网站:https : //simpl.info/getusermedia/sources/并修改了代码,以便现在我可以使用在Chrome上运行的浏览器和在Android上运行Firefox的相机之间进行切换,在WebView上-第一次打开时它将显示来自前置摄像头的流,但是当我将选择更改为后置摄像头时,它将不更新到后置摄像头。
有谁知道解决方案或解决方法吗?这与onChange在Android WebView中不起作用有关吗?(我已经搜索过了,但是找不到解决方案)
我希望这不是一个愚蠢的问题,我对Android开发完全陌生。
我的HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<script src="main.js"></script>
<base target="_blank">
<title>Video TEST</title>
</head>
<body>
<p>This is a test</p>
<div id="container">
<div class="select">
<label for="videoSource">Video source: </label><select id="videoSource"></select>
</div>
<video muted autoplay></video>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我的JavaScript(main.js):
'use strict';
var videoElement = document.querySelector('video');
var videoSelect = document.querySelector('select#videoSource');
navigator.mediaDevices.enumerateDevices()
.then(gotDevices).then(getStream).catch(handleError);
videoSelect.onchange = getStream;
function gotDevices(deviceInfos) {
for (var i = 0; i !== deviceInfos.length; ++i) {
var deviceInfo = deviceInfos[i];
//This creates an element that can be used later
var option = document.createElement('option');
//this sets the value of the option to the ID of the Device
option.value = deviceInfo.deviceId;
if(deviceInfo.kind === 'videoinput') {
option.text = deviceInfo.label || 'camera' + (videoSelect.length + 1);
videoSelect.appendChild(option);
} else {
console.log('Found one other kind of source/device: ', deviceInfo);
}
}
}
function getStream() {
if (window.stream) {
window.stream.getTracks().forEach(function(track) {
track.stop();
});
}
var constraints = {
video: {
optional: [{
sourceId: videoSelect.value
}]
}
};
navigator.mediaDevices.getUserMedia(constraints).
then(gotStream).catch(handleError);
}
function gotStream(stream) {
window.stream = stream; // make stream available to console
videoElement.srcObject = stream;
}
function handleError(error) {
console.log('Error: ', error);
}
Run Code Online (Sandbox Code Playgroud)
我的权限(可能比需要的还多)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="uk.co.babyvideolink.babyvideolink1">
<!--Added 20/07 CB-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.CAPTURE_SECURE_VIDEO_OUTPUT" />
<uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT" />
<uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="true" />
<uses-feature android:name="android.hardware.camera.front" android:required="true" />
<uses-feature android:name="android.hardware.camera.level.full" android:required="true" />
<uses-feature android:name="android.hardware.camera.capability.raw" android:required="true" />
<uses-feature android:name="android.hardware.camera.any" android:required="true" />
<uses-feature android:name="android.hardware.microphone" android:required="true" />
<uses-feature android:name="android.hardware.camera2" android:required="true" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
Run Code Online (Sandbox Code Playgroud)
请注意,为了简洁起见,版权声明已从代码中删除。
| 归档时间: |
|
| 查看次数: |
510 次 |
| 最近记录: |